[tor-commits] [translation/tbmanual-contentspot] new translations in tbmanual-contentspot

2022-02-22 Thread translation
commit 8d4aeccf8b21fe79a72d25549972ab5043beee63
Author: Translation commit bot 
Date:   Wed Feb 23 07:46:48 2022 +

new translations in tbmanual-contentspot
---
 contents+km.po | 81 +-
 1 file changed, 41 insertions(+), 40 deletions(-)

diff --git a/contents+km.po b/contents+km.po
index 392bfdb894..ba7fbb9207 100644
--- a/contents+km.po
+++ b/contents+km.po
@@ -9,8 +9,8 @@
 # sophat CHY , 2022
 # Rasy Chum , 2022
 # Moses Ngeth, 2022
-# Keo Chanra, 2022
 # Cantaloupe Melon, 2022
+# Keo Chanra, 2022
 # 
 msgid ""
 msgstr ""
@@ -18,7 +18,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2022-02-17 14:39+UTC\n"
 "PO-Revision-Date: 2018-11-14 12:31+\n"
-"Last-Translator: Cantaloupe Melon, 2022\n"
+"Last-Translator: Keo Chanra, 2022\n"
 "Language-Team: Khmer (https://www.transifex.com/otf/teams/1519/km/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -181,7 +181,7 @@ msgstr "បង្វែរទិសដៅ"
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
 msgid "Bridges"
-msgstr "បណ្តាញ"
+msgstr "Bridges"
 
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
@@ -191,12 +191,12 @@ msgstr 
"គ្រប់គ្រងអត្តសញ្ញាណ"
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
 msgid "Secure Connections"
-msgstr "បណ្តាញសុវត្តិភាព"
+msgstr 
"ការតភ្ជាប់ដែលមានសុវត្តិភាព"
 
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
 msgid "Security Settings"
-msgstr "ការ​កំណត់​សុវត្ថិភាព"
+msgstr 
"ការ​កំណត់​ដែលមានសុវត្ថិភាព"
 
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
@@ -206,7 +206,7 @@ msgstr 
"កម្មវិធីជំនួយបន្ថែម"
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
 msgid "Updating"
-msgstr "តំឡើងជំនាន់ថ្មី"
+msgstr "កំពុងធ្វើបច្ចុប្បន្នភាព"
 
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
@@ -221,7 +221,7 @@ msgstr 
"កំពុងដំណើរការលុបកម្មវិធី
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
 msgid "Making Tor Browser Portable"
-msgstr 
"កំណត់អោយមានភាពងាយស្រួលក្នុងការប្រើប្រាស់កម្មវិធី
 Tor"
+msgstr 
"កំពុងកំណត់អោយមានភាពងាយស្រួលក្នុងការប្រើប្រាស់កម្មវិធី
 Tor"
 
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
@@ -233,7 +233,7 @@ msgstr "ការដោះស្រាយបញ្ហា"
 #: https//tb-manual.torproject.org/known-issues/
 #: (content/known-issues/contents+en.lrtopic.description)
 msgid "Known Issues"
-msgstr "បញ្ហាត្រូវបានរកឃើញ"
+msgstr "បញ្ហាដែលស្គាល់"
 
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
@@ -242,15 +242,15 @@ msgstr "កម្មវិធី Tor 
សម្រាប់ទូរស័ព្
 
 #: (dynamic)
 msgid "Contributors to this page:"
-msgstr "ច
ូលរួមយោបល់សម្រាប់ទំព័រនេះ"
+msgstr "ចូលរួមច
ំណែកសម្រាប់ទំព័រនេះ៖ "
 
 #: (dynamic)
 msgid "Edit this page"
-msgstr "កែប្រែទំព័រនេះ"
+msgstr "កែសម្រួលទំព័រនេះ"
 
 #: (dynamic)
 msgid "Give Feedback"
-msgstr "ផ្តល់យោបល់"
+msgstr "ផ្តល់យោបល់ត្រឡប់"
 
 #: (dynamic)
 msgid "Permalink"
@@ -259,29 +259,29 @@ msgstr 
"តំណរភ្ជាប់ជាក់លាក់"
 #: https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
 msgid "Newsletter"
-msgstr "ព្រឹត្តិបត្រពត៌មាន"
+msgstr "ព្រឹត្តិបត្រព័ត៌មាន"
 
 #: https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
 msgid "Pluggable transports"
-msgstr "បណ្តាញបង្វែងទិសដៅ"
+msgstr "ការតភ្ជាប់"
 
 #: https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
 msgid "Becoming a Tor Translator"
-msgstr 
"ក្លាយជាអ្នកបកប្រែរកម្មវិធី 
Tor"

[tor-commits] [translation/tbmanual-contentspot] new translations in tbmanual-contentspot

2022-02-22 Thread translation
commit 95bc87f6b8a9fbacf850fe55c835b3e676fde4aa
Author: Translation commit bot 
Date:   Wed Feb 23 07:16:51 2022 +

new translations in tbmanual-contentspot
---
 contents+km.po | 85 --
 1 file changed, 41 insertions(+), 44 deletions(-)

diff --git a/contents+km.po b/contents+km.po
index a6080fc768..392bfdb894 100644
--- a/contents+km.po
+++ b/contents+km.po
@@ -8,8 +8,8 @@
 # Piseth KONG , 2022
 # sophat CHY , 2022
 # Rasy Chum , 2022
-# Keo Chanra, 2022
 # Moses Ngeth, 2022
+# Keo Chanra, 2022
 # Cantaloupe Melon, 2022
 # 
 msgid ""
@@ -110,8 +110,8 @@ msgid ""
 "Download Tor Browser to experience real private browsing without tracking, "
 "surveillance, or censorship."
 msgstr ""
-"ទាញយកកម្មវិធី Tor Browser 
ដើម្បីធ្វើការស្វែងរកព័ត៌មានដោយឯកជន
 មិនមានការតាមដាន"
-" ឃ្លាំមើល 
ឬការត្រួតពិនិត្យ។​"
+"ទាញយកកម្មវិធីរុករក Tor 
ដើម្បីស្វែងរកព័ត៌មានឯកជនពិតប្រាកដ
 ដោយមិនមានការតាមដាន "
+"ការឃ្លាំមើល ឬ 
ការត្រួតពិនិត្យ។​"
 
 #: (dynamic)
 msgid "Our mission:"
@@ -125,17 +125,17 @@ msgid ""
 "understanding."
 msgstr ""
 "ដើម្បីជំរុញសិទ្ធិ 
និងសេរីភាពឱ្យមានភាពប្រសើរឡើង
 តាមរយៈការបង្កើត "
-"និងដាក់ឱ្យប្រើប្រាស់នូវបច
្ចេកវិទ្យាកូដចំហ 
ដែលមានភាពឯកជននិងអនាមិក "
-"គាំទ្រដល់លទ្ធភាពប្រើប្រាស់និងគ្មានការរឹតត្បិត
 "
+"និងការដាក់ឱ្យប្រើប្រាស់នូវបáž
…្ចេកវិទ្យាកូដដោយសេរី និងចំហ
 ដោយអនាមិក និងឯកជនភាព"
+" គាំទ្រដល់ភាពអាចរកបាន 
និងការប្រើប្រាស់គ្មានការរឹតត្បិត
 "
 
"និងបន្ថែមការយល់ដឹងបែបវិទ្យាសាស្ត្រ
 និងពេញនិយមដល់ពួកគេ។"
 
 #: (dynamic)
 msgid "Subscribe to our Newsletter"
-msgstr 
"ទទួលព្រឹត្តិបត្រព័ត៌មានរបស់យើង"
+msgstr "ច
ុះឈ្មោះទទួលព្រឹត្តិបត្រព័ត៌មានរបស់យើង"
 
 #: (dynamic)
 msgid "Get monthly updates and opportunities from the Tor Project:"
-msgstr "ទទួលបានព័ត៌មានថ្មីៗប្រច
ាំខែ និងឱកាសផ្សេងៗពីគម្រោង 
Tor៖"
+msgstr "ទទួលបានបច្ច
ុប្បន្នភាពព័ត៌មានប្រចាំខែ 
និងឱកាសផ្សេងៗពីគម្រោង Tor៖"
 
 #: (dynamic)
 msgid "Sign up"
@@ -146,9 +146,8 @@ msgid ""
 "Trademark, copyright notices, and rules for use by third parties can be "
 "found in our %(link_to_faq)s"
 msgstr ""
-"សញ្ញាពាណិជ្ជកម្ម 
ការបញ្ជាក់ពីការសិក្សាសិទិ្ធ
 "
-"និងបទបញ្ញាតិ្តសម្រាប់ប្រើប្រាស់ដោយភាគីទីបី
 "
-"អាចរកបាននៅទីក្នុងសំណួរច
ំលើយរបស់យើង។ "
+"សញ្ញាពាណិជ្ជកម្ម 
ការបញ្ជាក់ពីការរក្សាសិទិ្ធ "
+"និងបទបញ្ញតិ្តសម្រាប់ប្រើប្រាស់ដោយភាគីទីបី
 អាចរកបាននៅក្នុង %(link_to_faq)s។ "
 
 #: (dynamic)
 msgid "Topics"
@@ -162,7 +161,7 @@ msgstr "អំពីកម្មវិធី Tor"
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
 msgid "Downloading"
-msgstr "ទាញ​យក"
+msgstr "កំពុងទាញ​យក"
 
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
@@ -172,7 +171,7 @@ msgstr "ការដំឡើង"
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
 msgid "Running Tor Browser for the First Time"
-msgstr "ដំណើរការកម្មវិធី Tor 
លើកដំបូង"
+msgstr "កំពុងដំណើរការកម្មវិធី Tor 
លើកដំបូង"
 
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: 

[tor-commits] [translation/tbmanual-contentspot] new translations in tbmanual-contentspot

2022-02-22 Thread translation
commit db1840949044e5f40ff76f9d79094147c4445e6c
Author: Translation commit bot 
Date:   Wed Feb 23 06:46:53 2022 +

new translations in tbmanual-contentspot
---
 contents+km.po | 42 +-
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/contents+km.po b/contents+km.po
index 6c99e76975..a6080fc768 100644
--- a/contents+km.po
+++ b/contents+km.po
@@ -7,10 +7,10 @@
 # Emma Peel, 2022
 # Piseth KONG , 2022
 # sophat CHY , 2022
-# Moses Ngeth, 2022
 # Rasy Chum , 2022
-# Cantaloupe Melon, 2022
 # Keo Chanra, 2022
+# Moses Ngeth, 2022
+# Cantaloupe Melon, 2022
 # 
 msgid ""
 msgstr ""
@@ -18,7 +18,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2022-02-17 14:39+UTC\n"
 "PO-Revision-Date: 2018-11-14 12:31+\n"
-"Last-Translator: Keo Chanra, 2022\n"
+"Last-Translator: Cantaloupe Melon, 2022\n"
 "Language-Team: Khmer (https://www.transifex.com/otf/teams/1519/km/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -60,7 +60,7 @@ msgstr "គាំទ្រ"
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
 msgid "Community"
-msgstr "សាហគមន៍"
+msgstr "សហគមន៍"
 
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
@@ -94,7 +94,7 @@ msgstr "ព័ត៌មាន"
 
 #: (dynamic)
 msgid "Download Tor Browser"
-msgstr "ទាញយកកម្មវិធី Tor Browser"
+msgstr "ទាញយកកម្មវិធីរុករក Tor"
 
 #: (dynamic)
 msgid "Search"
@@ -1360,7 +1360,7 @@ msgid ""
 "If you're starting Tor Browser for the first time, click \"Tor Network "
 "Settings\" to open the Tor settings window."
 msgstr ""
-"ប្រសិនបើអ្នកច
ាប់ផ្តើមដំណើរការកម្មវិធី Tor 
លើដំបូង ចុចលើ 
\"ការកំណត់បណ្តាញ "
+"ប្រសិនបើអ្នកច
ាប់ផ្តើមដំណើរការកម្មវិធី Tor 
លើកដំបូង ចុចលើ 
\"ការកំណត់បណ្តាញ "
 "Tor\"  
ដើម្បីបើកផ្ទាំងការកំណត់។"
 
 #: https//tb-manual.torproject.org/bridges/
@@ -1370,10 +1370,10 @@ msgid ""
 "choose \"Request a bridge from torproject.org\" and click \"Request a "
 "Bridge...\" for BridgeDB to provide a bridge."
 msgstr ""
-"នៅផ្នែកខាងក្រោមបណ្តាញ \"Bridges\"  
ជ្រើសយក \"ប្រើប្រាស់បណ្តាញ 
Bridges\"  "
-"បន្ទាប់មក ជ្រើសយក 
\"ស្នើសុំបណ្តាញ Bridges 
ពីគម្រោងរបស់ Tor : "
-"torproject.org\" ហើយ ចុចលើ 
\"ស្នើសុំបណ្តាញ Bridges...\" 
ពីដែតាបេសរបស់បណ្តាញ "
-"Bridges ក្នុងការបង្តើតបណ្តាញ Bridges 
។"
+"នៅផ្នែកខាងក្រោម \"Bridges\" 
ជ្រើសយក \"ប្រើប្រាស់បណ្តាញ 
Bridges\" បន្ទាប់មក "
+"ជ្រើសយក \"ស្នើសុំបណ្តាញ Bridges 
ពីគម្រោងរបស់ Tor៖ torproject.org\" ហើយ ចុច
លើ"
+" \"ស្នើសុំបណ្តាញ Bridges...\" 
ពីមូលទិន្នន័យរបស់ Bridges 
ក្នុងការបង្តើតបណ្តាញ"
+" Bridges ។"
 
 #: https//tb-manual.torproject.org/bridges/
 #: (content/bridges/contents+en.lrtopic.body)
@@ -1381,7 +1381,7 @@ msgid ""
 "Complete the Captcha and click \"Submit\". Click \"Connect\" to save your "
 "settings."
 msgstr ""
-"បំពេញលំហាត់សុវត្តិភាព ហើយច
ុច \"បញ្ជូន\"។ ចុច \"តភ្ជាប់\" "
+"បំពេញ Captcha ហើយចុច \"បញ្ជូន\"។ ចុច
 \"តភ្ជាប់\" "
 
"ដើម្បីរក្សាទុកការកំណត់របស់អ្នក។"
 
 #: https//tb-manual.torproject.org/bridges/
@@ -1391,10 +1391,10 @@ msgid ""
 "the option \"Request a bridge from torproject.org\", click \"Request a New "
 "Bridge...\" for BridgeDB to provide a bridge."
 msgstr ""
-"នៅក្នុងការកំណត់បណ្តាញ \"Bridges\" 
ជ្រើសយក \"ប្រើប្រាស់បណ្តាញ​ 
Bridges\" "
-"នៅ
ក្នុងប្រអប់ជម្រើសជ្រើសយក 
\"ស្នើរសុំបណ្តាញតភ្ជាប់បណ្តាញ
 Bridges "
-"ពីគម្រោងរបស់ Tor: torproject.org\" ចុច 
\"ស្នើសុំបណ្តាញ Bridges ថ្មី...\" "
-"ពីដែតាបេសរបស់បណ្តាញ Bridges។ "
+"នៅក្នុងការកំណត់ \"Bridges\" 

[tor-commits] [translation/gettor-website-contentspot] new translations in gettor-website-contentspot

2022-02-22 Thread translation
commit 1f39be1653be7c8aa86e85eddf817b72454c1310
Author: Translation commit bot 
Date:   Wed Feb 23 06:45:20 2022 +

new translations in gettor-website-contentspot
---
 contents+km.po | 63 --
 1 file changed, 30 insertions(+), 33 deletions(-)

diff --git a/contents+km.po b/contents+km.po
index a168eedc14..2f55d955c0 100644
--- a/contents+km.po
+++ b/contents+km.po
@@ -84,8 +84,8 @@ msgid ""
 "Download Tor Browser to experience real private browsing without tracking, "
 "surveillance, or censorship."
 msgstr ""
-"ទាញយកកម្មវិធីរុករក Tor 
ដើម្បីទទួលបាននូវ​បទពិសោធន៍ពិតប្រាកដដោយឯកជន
 "
-"មិនមានការតាមដាន ឃ្លាំមើល 
ឬការចាប់ពិរុទ្ធ។​"
+"ទាញ​យក​កម្មវិធី​រុករក Tor 
ដើម្បីទទួលបាននូវ​​បទពិសោធន៍​ពិត​ប្រាកដ​ដោយ​ឯកជន
 "
+"មិនមាន​ការតាមដាន ឃ្លាំមើល 
ឬការចាប់ពិរុទ្ធ។​"
 
 #: (dynamic)
 msgid "Our mission:"
@@ -257,10 +257,10 @@ msgid ""
 "who want an extra layer of security because they're worried somebody will "
 "recognize that they are contacting a public Tor relay IP address."
 msgstr ""
-"ស្ពានច
ម្លងមានប្រយោជន៍សម្រាប់អ្នកប្រើប្រាស់
 Tor 
ដែលរស់ស្ថិតក្រោមរបបគៀបសង្កត់
 "
-"និងសម្រាប់អ្នកដែលច
ង់បានស្រទាប់សុវត្ថិភាពបន្ថែម
 "
-"ពីព្រោះពួកគេបារម្ភថានរណាម្នាក់នឹងដឹងថាពួកគេកំពុងទាក់ទងអាសយដ្ឋាន
 IP បញ្ជូនត "
-"Tor ជាសាធារណៈ។"
+"Bridges 
មានប្រយោជន៍សម្រាប់អ្នកប្រើប្រាស់
 Tor 
ដែលរស់ស្ថិតក្រោមរបបគៀបសង្កត់
 "
+"និងសម្រាប់អ្នកដែលច
ង់បានការការពារសុវត្ថិភាពបន្ថែម
 "
+"ពីព្រោះពួកគេបារម្ភថានរណាម្នាក់អាáž
…
ដឹងថាពួកគេកំពុងប្រើប្រាស់អាសយដ្ឋាន
 IP "
+"បញ្ជូនត Tor ជាសាធារណៈ។"
 
 #: https//gettor.torproject.org/ (content/contents+en.lrpage.body)
 msgid ""
@@ -268,10 +268,10 @@ msgid ""
 "want to use bridges. To use pluggable transports, click 'Configure' in the "
 "Tor Launcher window that appears when you first run Tor Browser."
 msgstr ""
-"នៅពេលអ្នកច
ាប់ផ្តើមកម្មវិធីរុករក Tor Browser 
ជាលើកដំបូង 
អ្នកនឹងត្រូវបានសួរថា "
-"តើអ្នកចង់ប្រើស្ពានចម្លង 
ឬអត់។ ដើម្បីភ្ជាប់ស្ពានច
ម្លងនេះបាន សូមចុច "
-"'កំណត់រចនាសម្ព័ន្ធ' នៅ
ក្នុងផ្ទាំង Tor Launcher "
-"ដែលលេចឡើងនៅ
ពេលអ្នកដំណើរការកម្មវិធីរុករក
 Tor Browser ដំបូង។"
+"នៅពេលអ្នកច
ាប់ផ្តើមកម្មវិធីរុករក Tor 
ជាលើកដំបូង 
អ្នកនឹងត្រូវបានសួរថា "
+"តើអ្នកចង់ប្រើbridges ឬអត់។ 
ដើម្បីភ្ជាប់ស្ពានច
ម្លងនេះបាន សូមចុច 'ការកំណត់' "
+"នៅក្នុងផ្ទាំង Tor Launcher ដែលលេច
ឡើងនៅ
ពេលអ្នកដំណើរការកម្មវិធីរុករក
 Tor "
+"ដំបូង។"
 
 #: https//gettor.torproject.org/ (content/contents+en.lrpage.body)
 msgid ""
@@ -280,10 +280,10 @@ msgid ""
 "bar. Once in Preferences, navigate to 'Tor' from the menu on the left of the"
 " screen."
 msgstr ""
-"អ្នកក៏អាចកំណត់រច
នាសម្ព័ន្ធនៃការភ្ជាប់ស្ពានáž
…ម្លងនេះ "
-"ខណៈពេលដែលកំពុងប្រើប្រាស់កម្មវិធីរុករក
 Tor Browser  បានផងដែរ ដោយជ្រើសរើស "
-"'ចំណង់ចំណូលចិត្ត' 
ពីមឺនុយកំណត់នៅ
ខាងស្តាំនៃរបារអាសយដ្ឋាន។ នៅ

[tor-commits] [translation/gettor-website-contentspot] new translations in gettor-website-contentspot

2022-02-22 Thread translation
commit f07435dbe3e46d1056919be165069c2aafbb17fd
Author: Translation commit bot 
Date:   Wed Feb 23 06:15:20 2022 +

new translations in gettor-website-contentspot
---
 contents+km.po | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/contents+km.po b/contents+km.po
index d6e03b006b..a168eedc14 100644
--- a/contents+km.po
+++ b/contents+km.po
@@ -247,8 +247,9 @@ msgid ""
 "That means that ISPs or governments trying to block access to the Tor "
 "network can't simply block all bridges."
 msgstr ""
-"នោះមានន័យថា ISPs 
ឬរដ្ឋាភិបាលដែលព្យាយាមរារាំងការáž
…ូលប្រើបណ្តាញ Tor "
-"មិនអាចបិទស្ពានច
ម្លងទាំងអស់នោះបានទេ។"
+"នោះមានន័យថា 
អ្នកផ្គត់ផ្គងសេវាកម្មអ៉ីនធឺណិត
 "
+"ឬរដ្ឋាភិបាលដែលព្យាយាមរារាំងការáž
…ូលប្រើ​បណ្តាញ Tor "
+"មិនអាច
បិទbridgesទាំងអស់នោះបានទេ។"
 
 #: https//gettor.torproject.org/ (content/contents+en.lrpage.body)
 msgid ""

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


[tor-commits] [translation/tbmanual-contentspot] new translations in tbmanual-contentspot

2022-02-22 Thread translation
commit bfddff1fd404e5371d33d5467c5772f3d12a004e
Author: Translation commit bot 
Date:   Wed Feb 23 05:46:55 2022 +

new translations in tbmanual-contentspot
---
 contents+km.po | 18 --
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/contents+km.po b/contents+km.po
index 066f82c458..6c99e76975 100644
--- a/contents+km.po
+++ b/contents+km.po
@@ -4,12 +4,13 @@
 # Ty Sok , 2021
 # Transifex Bot <>, 2022
 # Vannak Lach, 2022
-# Cantaloupe Melon, 2022
 # Emma Peel, 2022
 # Piseth KONG , 2022
 # sophat CHY , 2022
 # Moses Ngeth, 2022
 # Rasy Chum , 2022
+# Cantaloupe Melon, 2022
+# Keo Chanra, 2022
 # 
 msgid ""
 msgstr ""
@@ -17,7 +18,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2022-02-17 14:39+UTC\n"
 "PO-Revision-Date: 2018-11-14 12:31+\n"
-"Last-Translator: Rasy Chum , 2022\n"
+"Last-Translator: Keo Chanra, 2022\n"
 "Language-Team: Khmer (https://www.transifex.com/otf/teams/1519/km/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -36,9 +37,7 @@ msgstr "គម្រោង Tor | សៀវភៅ
ណែនាំកម្មវ
 
 #: (dynamic)
 msgid "Donate"
-msgstr ""
-"83%match\n"
-"បរិច្ចាគ"
+msgstr "បរិច្ចាគ"
 
 #: (dynamic)
 msgid "Donate Now"
@@ -46,7 +45,7 @@ msgstr "បរិច្ចាគឥឡូវ"
 
 #: (dynamic)
 msgid "Menu"
-msgstr "មឺនុយ"
+msgstr "មីនុយ"
 
 #: (dynamic) https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
@@ -1342,9 +1341,8 @@ msgid ""
 "* Email [brid...@torproject.org](mailto:brid...@torproject.org) from a "
 "Gmail, or Riseup email address"
 msgstr ""
-"* ផ្ញើរអ៊ុីម៉ែលទៅកាន់ ៖ "
-"[brid...@torproject.org](mailto:brid...@torproject.org) 
ពីអាស័យដ្ឋាន Gmail ឬ"
-" អាស័យដ្ឋាន Riseup"
+"* អ៊ុីម៉ែលទៅកាន់ ៖ 
[brid...@torproject.org](mailto:brid...@torproject.org) "
+"ពីអាស័យដ្ឋាន Gmail ឬ អាស័យដ្ឋាន 
Riseup"
 
 #: https//tb-manual.torproject.org/bridges/
 #: (content/bridges/contents+en.lrtopic.body)
@@ -1354,7 +1352,7 @@ msgstr "* សូមប្រើប្រាស់ Moat 
ដើម្បីចា
 #: https//tb-manual.torproject.org/bridges/
 #: (content/bridges/contents+en.lrtopic.body)
 msgid "### USING MOAT"
-msgstr "### ការប្រើប្រាស់ Moat"
+msgstr "### កំពុងប្រើប្រាស់ Moat"
 
 #: https//tb-manual.torproject.org/bridges/
 #: (content/bridges/contents+en.lrtopic.body)

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


[tor-commits] [translation/gettor-website-contentspot] new translations in gettor-website-contentspot

2022-02-22 Thread translation
commit a6de8ec3bcc2824bdbb0743f37c1eec1fc9c4dfa
Author: Translation commit bot 
Date:   Wed Feb 23 05:45:23 2022 +

new translations in gettor-website-contentspot
---
 contents+km.po | 14 +++---
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/contents+km.po b/contents+km.po
index 2deaa07ae7..d6e03b006b 100644
--- a/contents+km.po
+++ b/contents+km.po
@@ -173,7 +173,7 @@ msgstr ""
 
 #: https//gettor.torproject.org/ (content/contents+en.lrpage.body)
 msgid "- Step 4: If required, get some bridges!"
-msgstr "- ជំហានទី ៤៖ ប្រសិនបើច
ាំបាច់ ទទួលស្ពានខ្លះ!???​ Need to 
discuss."
+msgstr "- ជំហានទី ៤៖ ប្រសិនបើច
ាំបាច់ ភ្ជាប់ទៅកាន់bridges"
 
 #: https//gettor.torproject.org/ (content/contents+en.lrpage.body)
 msgid "## GetTor Responder on Twitter"
@@ -201,16 +201,16 @@ msgid ""
 "In GetTor emails we provide a link to a file with the same name as the "
 "package and the extension \".asc\". These .asc files are OpenPGP signatures."
 msgstr ""
-"នៅក្នុងសារអេឡិចត្រូនិក GetTor "
-"យើងផ្តល់តំណភ្ជាប់ទៅ
ឯកសារដែលមានឈ្មោះដូច
គ្នាជាមួយកញ្ចប់ 
និងកម្មវិធីបន្ថែម "
-"\".asc\" ។ ឯកសារ .asc ទាំងនេះគឺជាហ
ត្ថលេខា OpenPGP ។"
+"នៅក្នុងសារអ៉ីម៉ែល GetTor "
+"ដែលយើងផ្ញើឲ្យជាតំណភ្ជាប់ទៅ
ឯកសារដែលមានឈ្មោះដូច
គ្នាជាមួយកញ្ចប់ "
+"និងកម្មវិធីបន្ថែម \".asc\" ។ 
ឯកសារ .asc ទាំងនេះគឺជាហត្ថលេខា 
OpenPGP ។"
 
 #: https//gettor.torproject.org/ (content/contents+en.lrpage.body)
 msgid ""
 "They allow you to verify the file you've downloaded is exactly the one that "
 "we intended you to get."
 msgstr ""
-"ពួកគេអនុញ្ញាតឱ្យអ្នកផ្ទៀងផ្ទាត់ឯកសារដែលអ្នកបានទាញយក
 "
+"វាអនុញ្ញាតឱ្យអ្នកផ្ទៀងផ្ទាត់ឯកសារដែលអ្នកបានទាញយក
 "
 "ថាវាគឺពិតជាឯកសារដែលយើងច
ង់ឱ្យអ្នកទទួលបានពិតមែន។"
 
 #: https//gettor.torproject.org/ (content/contents+en.lrpage.body)
@@ -239,8 +239,8 @@ msgid ""
 "Bridge relays are Tor relays that are not listed in the public Tor "
 "directory."
 msgstr ""
-"ស្ពានចម្លង 
គឺជាឧបករណ៍សម្រួលការទំនាក់ទំនងរបស់
 Tor "
-"ដែលមិនត្រូវច
ុះក្នុងបញ្ជីសាធារណៈរបស់ Tor។"
+"Bridges បញ្ចូនបន្ត 
គឺជាឧបករណ៍បញ្ជូនបន្តរបស់ Tor "
+"ដែលមិនត្រូវច
ុះក្នុងថតឯកសារសាធារណៈរបស់ 
Tor។"
 
 #: https//gettor.torproject.org/ (content/contents+en.lrpage.body)
 msgid ""

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


[tor-commits] [translation/gettor-website-contentspot] new translations in gettor-website-contentspot

2022-02-22 Thread translation
commit adeb53072e3720c83bc8ed77cbf774261ee1e62a
Author: Translation commit bot 
Date:   Wed Feb 23 05:15:24 2022 +

new translations in gettor-website-contentspot
---
 contents+km.po | 31 ---
 1 file changed, 16 insertions(+), 15 deletions(-)

diff --git a/contents+km.po b/contents+km.po
index 70d233f442..2deaa07ae7 100644
--- a/contents+km.po
+++ b/contents+km.po
@@ -4,6 +4,7 @@
 # erinm, 2022
 # Vannak Lach, 2022
 # Emma Peel, 2022
+# Cantaloupe Melon, 2022
 # Moses Ngeth, 2022
 # 
 msgid ""
@@ -83,8 +84,8 @@ msgid ""
 "Download Tor Browser to experience real private browsing without tracking, "
 "surveillance, or censorship."
 msgstr ""
-"ទាញយកកម្មវិធី Tor Browser 
ដើម្បីធ្វើការស្វែងរកព័ត៌មានដោយឯកជន
 មិនមានការតាមដាន"
-" ឃ្លាំមើល ឬការចាប់ពិរុទ្ធ។​"
+"ទាញយកកម្មវិធីរុករក Tor 
ដើម្បីទទួលបាននូវ​បទពិសោធន៍ពិតប្រាកដដោយឯកជន
 "
+"មិនមានការតាមដាន ឃ្លាំមើល 
ឬការចាប់ពិរុទ្ធ។​"
 
 #: (dynamic)
 msgid "Our mission:"
@@ -98,13 +99,13 @@ msgid ""
 "understanding."
 msgstr ""
 "ដើម្បីជំរុញសិទ្ធិ 
និងសេរីភាពឱ្យមានភាពប្រសើរឡើង
 តាមរយៈការបង្កើត "
-"និងដាក់ឱ្យប្រើប្រាស់នូវបច
្ចេកវិទ្យាកូដចំហ 
ដែលមានភាពឯកជននិងអនាមិក "
+"និងដាក់ឱ្យប្រើប្រាស់នូវបច
្ចេកវិទ្យា​កូដចំហ 
ដែលមានភាពឯកជននិងអនាមិក "
 
"គាំទ្រដល់លទ្ធភាពប្រើប្រាស់និងគ្មានការរឹតត្បិត
 "
 
"និងបន្ថែមការយល់ដឹងបែបវិទ្យាសាស្ត្រ
 និងពេញនិយមដល់ពួកគេ។"
 
 #: (dynamic)
 msgid "Subscribe to our Newsletter"
-msgstr 
"ទទួលព្រឹត្តិបត្រព័ត៌មានរបស់យើង"
+msgstr "ច
ុះឈ្មោះទទួលព្រឹត្តិបត្រព័ត៌មានរបស់យើង"
 
 #: (dynamic)
 msgid "Get monthly updates and opportunities from the Tor Project:"
@@ -133,9 +134,9 @@ msgid ""
 "Browser, especially for people living in places with high levels of "
 "censorship, where access to Tor Project's website is restricted."
 msgstr ""
-"GetTor 
គឺជាសេវាកម្មដែលផ្តល់នូវជម្រើសផ្សេងក្នុងការទាញយក
 Tor Browser "
-"ជាពិសេសសម្រាប់អ្នកដែលរស់នៅ
កន្លែងដែលមានកម្រិតនៃការច
ាប់ពិរុទ្ធខ្ពស់ "
-"ហើយនិងមានការបិទមិនឲ្យច
ូលប្រើវិបសាយរបស់គម្រោង Tor។"
+"GetTor 
គឺជាសេវាកម្មដែលផ្តល់នូវ​ជម្រើស​ផ្សេងក្នុងការទាញយក
 Tor Browser "
+"ជាពិសេសសម្រាប់អ្នកដែលរស់នៅ
កន្លែងណាដែលមានកម្រិតនៃការច
ាប់ពិរុទ្ធខ្ពស់ "
+"និងមានការបិទមិនឲ្យច
ូលប្រើវេបសាយរបស់គម្រោង Tor។"
 
 #: https//gettor.torproject.org/ (content/contents+en.lrpage.body)
 msgid "# How does it work?"
@@ -143,14 +144,14 @@ msgstr "# 
តើវាដំណើរការដោយរបៀបណា?"
 
 #: https//gettor.torproject.org/ (content/contents+en.lrpage.body)
 msgid "The idea behind GetTor is very simple:"
-msgstr "គំនិតនៅពីក្រោយ GetTor 
គឺសាមញ្ញណាស់៖"
+msgstr "គំនិតដែលបង្កើត GetTor 
គឺសាមញ្ញណាស់៖"
 
 #: https//gettor.torproject.org/ (content/contents+en.lrpage.body)
 msgid ""
 "- Step 1: Send a request to GetTor (get...@torproject.org) specifying your "
 "operating system (and your locale). Ex: \"windows es\""
 msgstr ""
-"- ជំហានទី ១៖ ផ្ញើសំណើទៅកាន់ 
GetTor (get...@torproject.org) "
+"- ជំហានទី ១​៖ ផ្ញើ​សំណើ​ទៅ
កាន់ GetTor (get...@torproject.org) "
 
"ដោយបញ្ជាក់ពីប្រព័ន្ធប្រតិបត្តិការរបស់អ្នក
 

[tor-commits] [translation/fenix-torbrowserstringsxml_completed] new translations in fenix-torbrowserstringsxml_completed

2022-02-22 Thread translation
commit 54bc71a55ce073b63a5ec75884a8c00e7e42767d
Author: Translation commit bot 
Date:   Wed Feb 23 05:15:20 2022 +

new translations in fenix-torbrowserstringsxml_completed
---
 km/torbrowser_strings.xml | 75 +++
 1 file changed, 75 insertions(+)

diff --git a/km/torbrowser_strings.xml b/km/torbrowser_strings.xml
new file mode 100644
index 00..2181367546
--- /dev/null
+++ b/km/torbrowser_strings.xml
@@ -0,0 +1,75 @@
+
+
+
+%1$sត្រូវបាន​បង្កើត​ឡើង​ដោយ​គម្រោង
 Tor ជា​អង្គការ​មិន​រក​ប្រាក់ច
ំណេញ 501(c)(3) មានមូលដ្ឋាននៅសហ
រដ្ឋអាមេរិក។
+
+
+អនុញ្ញាត​តែ​កម្មវិធី​រុករក​ឯកជន​តែប៉ុណ្ណោះ
 
+
+បរិច្ចាគ​ទៅ
​គម្រោង Tor
+
+អនុញ្ញាត​ឱ្យ​ថត​អេក្រង់
+
+ភ្ជាប់
+កំពុងតភ្ជាប់
+ការ​តភ្ជាប់​បាន​បរាជ័យ
+ច
ាប់ផ្ដើម​រហ័ស
+បើកមុខងារ ច
ាប់ផ្ដើម​រហ័ស 
ដើម្បី​ភ្ជាប់​ដោយ​ស្វ័យប្រវត្តិ​នáŸ
…​ពេល​អនាគត
+%sនឹង​ភ្ជាប់​ដោយ​ស្វ័យប្រវត្តិ​ទáŸ
…​​បណ្ដាញ​ Tor ​នៅ
​ពេល​អនាគត
+អូស​ទៅ
​ឆ្វេង​ដើម្បី​មើល​កំណត់ត្រា
 Tor
+កំពុង​ច
ាប់ផ្ដើម​កត់ត្រា Tor
+
+កំណត់​កម្រិត​សន្ដិសុខ​របស់​អ្នក
+បិទ​មុខងារ​វេបសាយ​ដែល​អាáž
…
​ត្រូវបាន​ប្រើប្រាស់​ដើម្បី​វាយប្រáž
 áž¶ážšâ€‹áž¢áŸ’នក 
និង​ធ្វើ​ឱ្យ​ប៉ះពាល់​ដល់​សន្តិសុខ
 ភាព​អនាមិក 
និង​ឯកជនភាព​របស់​អ្នក។
+កម្រិត​សន្តិសុខ​បáž
…្ចុប្បន្ន៖ %s
+បើកការកំណត់​សន្តិសុខ
+បរិច្ចាគ 
និងរក្សា Tor ឱ្យ​សុវត្ថិភាព
+Tor គឺ​អាច
​ប្រើប្រាស់​ដោយ​សេរី 
ដោយសារ​ការ​បរិច្ច
ាគ​ពី​មនុស្ស​ដូច
ជា​អ្នក។
+បរិច្ច
ាគឥឡូវ
+
+រុករក ឯកជន
+
+បណ្ដាញ 
Tor
+កម្មវិធី​រុករក
 Tor បញ្ជូន​ចរាច
រណ៍​របស់​អ្នក​នៅលើ​បណ្ដាញ Tor 
ដែល​ដំណើរការ​ដោយ​អ្នក​ស្ម័គ្រáž
…ិត្ត​រាប់​ពាន់​នាក់​នៅ
​ជុំវិញ​ពិភពលោក។
+កំណត់ 
Bridge
+ប្រើ 
Bridge ដើម្បី​ភ្ជាប់​ទៅ Tor
+អ្នក​កំពុង​ប្រើ
 Bridge 
មាន​ស្រាប់​ដើម្បី​ភ្ជាប់​ទáŸ
… Tor
+អ្នក​បាន​ផ្ដល់
 Bridge ដើម្បី​ភ្ជាប់​ទៅ Tor
+Bridge 
គឺ​ជា​ការ​បញ្ជូនត​​មិនមាន​នáŸ
…​ក្នុង​បញ្ជី 
ដែល​ធ្វើ​ឱ្យ​វា​កាន់តេ​ពិបាក​ក្នុងការ​បិទខ្ទប់​ការ​តភ្ជាប់​ទáŸ
…កាន់​បណ្ដាញ Tor។ 
ដោយសារតែ​ប្រទេស​មួយច
ំនួន​ព្យាយាម​បិទខ្ទប់ Tor ដូច
្នេះ Bridge ដំណើរការ​នៅ
ក្នុង​ប្រទេស​មួយចំនួន 
ប៉ុន្តែ​មិន​ដំណើរការ​នៅ
​ប្រទេស​មួយច
ំនួន​ទៀត​ទេ។
+ប្រើ 
Bridge
+កំណត់
 Bridge ដើម្បី​ភ្ជាប់​ទៅ Tor
+obfs4
+meek-azure
+snowflake
+ផ្ដល់
 Bridge ដែល​ខ្ញុំ​ស្គាល់
+បញ្áž
…ូល​ព័ត៌មាន Bridge ពី​ប្រភព​ទុកច
ិត្ត
+Bridge 
ដែល​បាន​កំណត់​បច្ច
ុប្បន្ន៖%s
+មិនបានកំណត់
+ស្ថានភាព​ឥឡូវ
+តើ Tor 
រួច

[tor-commits] [translation/fenix-torbrowserstringsxml] new translations in fenix-torbrowserstringsxml

2022-02-22 Thread translation
commit 4181930e45fcedc6f7432e8bf95f2725ff5392a8
Author: Translation commit bot 
Date:   Wed Feb 23 05:15:17 2022 +

new translations in fenix-torbrowserstringsxml
---
 km/torbrowser_strings.xml | 14 +++---
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/km/torbrowser_strings.xml b/km/torbrowser_strings.xml
index 92ae103ae1..2181367546 100644
--- a/km/torbrowser_strings.xml
+++ b/km/torbrowser_strings.xml
@@ -17,12 +17,12 @@
 ការ​តភ្ជាប់​បាន​បរាជ័យ
 ច
ាប់ផ្ដើម​រហ័ស
 បើកមុខងារ ច
ាប់ផ្ដើម​រហ័ស 
ដើម្បី​ភ្ជាប់​ដោយ​ស្វ័យប្រវត្តិ​នáŸ
…​ពេល​អនាគត
-%sនឹង​ភ្ជាប់​ដោយ​ស្វ័យប្រវត្តិ​ទáŸ
…​បណ្ដាញ Tor នៅ​ពេល​អនាគត
+%sនឹង​ភ្ជាប់​ដោយ​ស្វ័យប្រវត្តិ​ទáŸ
…​​បណ្ដាញ​ Tor ​នៅ
​ពេល​អនាគត
 អូស​ទៅ
​ឆ្វេង​ដើម្បី​មើល​កំណត់ត្រា
 Tor
 កំពុង​ច
ាប់ផ្ដើម​កត់ត្រា Tor
 
 កំណត់​កម្រិត​សន្ដិសុខ​របស់​អ្នក
-បិទ​មុខងារ​វែបសាយ​ដែល​អាáž
…
​ត្រូវបាន​ប្រើប្រាស់​ដើម្បី​វាយប្រáž
 áž¶ážšâ€‹áž¢áŸ’នក 
និង​ធ្វើ​ឱ្យ​ប៉ះពាល់​ដល់​សន្តិសុខ
 ភាព​អនាមិក 
និង​ឯកជនភាព​របស់​អ្នក។
+បិទ​មុខងារ​វេបសាយ​ដែល​អាáž
…
​ត្រូវបាន​ប្រើប្រាស់​ដើម្បី​វាយប្រáž
 áž¶ážšâ€‹áž¢áŸ’នក 
និង​ធ្វើ​ឱ្យ​ប៉ះពាល់​ដល់​សន្តិសុខ
 ភាព​អនាមិក 
និង​ឯកជនភាព​របស់​អ្នក។
 កម្រិត​សន្តិសុខ​បáž
…្ចុប្បន្ន៖ %s
 បើកការកំណត់​សន្តិសុខ
 បរិច្ចាគ 
និងរក្សា Tor ឱ្យ​សុវត្ថិភាព
@@ -32,7 +32,7 @@
 រុករក ឯកជន
 
 បណ្ដាញ 
Tor
-កម្មវិធី​រុកក
 Tor បញ្ជូន​ចរាច
រណ៍​របស់​អ្នក​នៅលើ​បណ្ដាញ Tor 
ដែល​ដំណើរការ​ដោយ​អ្នក​ស្ម័គ្រáž
…ិត្ត​រាប់​ពាន់​នាក់​នៅ
​ជុំវិញ​ពិភពលោក។
+កម្មវិធី​រុករក
 Tor បញ្ជូន​ចរាច
រណ៍​របស់​អ្នក​នៅលើ​បណ្ដាញ Tor 
ដែល​ដំណើរការ​ដោយ​អ្នក​ស្ម័គ្រáž
…ិត្ត​រាប់​ពាន់​នាក់​នៅ
​ជុំវិញ​ពិភពលោក។
 កំណត់ 
Bridge
 ប្រើ 
Bridge ដើម្បី​ភ្ជាប់​ទៅ Tor
 អ្នក​កំពុង​ប្រើ
 Bridge 
មាន​ស្រាប់​ដើម្បី​ភ្ជាប់​ទáŸ
… Tor
@@ -64,12 +64,12 @@
 
 
 ស្ដង់ដារ
-គ្រប់​កម្មវិធី​រុករក
 Tor 
និង​មុខងារ​វែបសាយ​ត្រូវបាន​បើក។
+គ្រប់​កម្មវិធី​រុករក
 Tor 
និង​មុខងារវេបសាយត្រូវបាន​បើក។
 សុវត្ថិភាពជាង
-បិទ​មុខងារ​វែបសាយ​ដែល​ជា​រឿយៗ​មាន​គ្រោះថ្នាក់
 ដែល​បណ្ដាល​ឱ្យ​វែបសាយ​មួយច
ំនួន​មិន​ដំណើរការ។
+បិទ​មុខងារ​វេបសាយដែល​តែងតែ​មាន​គ្រោះថ្នាក់
 ហើយ​បណ្ដាល​ឱ្យ​គេហ
ទំព័រ​មួយច
ំនួន​មិន​ដំណើរការ។
 សុវត្ថិភាពបំផុត
-អនុញ្ញាត​តែ​មុខងារ​ណាត្រូវការ​សម្រាប់​ស្ថេរភាពនៃគេáž
 áž‘ំព័រ 
និង​សេវាកម្ម​មូលដ្ឋាន។ 
ការផ្លាស់ប្ដូរ​ទាំងនេះ​ប៉ះពាល់​ទáŸ
…​លើ​រូបភាព 

[tor-commits] [translation/gettor-website-contentspot] new translations in gettor-website-contentspot

2022-02-22 Thread translation
commit 13363877b394e33f7e1d03a0295afc9f40888dfe
Author: Translation commit bot 
Date:   Wed Feb 23 04:45:21 2022 +

new translations in gettor-website-contentspot
---
 contents+km.po | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/contents+km.po b/contents+km.po
index b03a2c1000..70d233f442 100644
--- a/contents+km.po
+++ b/contents+km.po
@@ -2,9 +2,9 @@
 # Translators:
 # Ty Sok , 2021
 # erinm, 2022
-# Moses Ngeth, 2022
 # Vannak Lach, 2022
 # Emma Peel, 2022
+# Moses Ngeth, 2022
 # 
 msgid ""
 msgstr ""
@@ -12,7 +12,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2022-02-08 05:48+UTC\n"
 "PO-Revision-Date: 2021-03-24 14:33+\n"
-"Last-Translator: Emma Peel, 2022\n"
+"Last-Translator: Moses Ngeth, 2022\n"
 "Language-Team: Khmer (https://www.transifex.com/otf/teams/1519/km/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -44,7 +44,7 @@ msgstr "អំពី"
 
 #: (dynamic)
 msgid "Support"
-msgstr "គាំទ្រ"
+msgstr "ការគាំទ្រ"
 
 #: (dynamic)
 msgid "Community"
@@ -76,7 +76,7 @@ msgstr "ព័ត៌មាន"
 
 #: (dynamic)
 msgid "Download Tor Browser"
-msgstr "ទាញយកកម្មវិធី Tor Browser"
+msgstr "ទាញយក​កម្មវិធីរុករក Tor"
 
 #: (dynamic)
 msgid ""

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


[tor-commits] [translation/fenix-torbrowserstringsxml] new translations in fenix-torbrowserstringsxml

2022-02-22 Thread translation
commit a679846c9a77ab4cbd0128648943dabd87a7beb6
Author: Translation commit bot 
Date:   Wed Feb 23 04:45:17 2022 +

new translations in fenix-torbrowserstringsxml
---
 km/torbrowser_strings.xml | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/km/torbrowser_strings.xml b/km/torbrowser_strings.xml
index 6c8e597780..92ae103ae1 100644
--- a/km/torbrowser_strings.xml
+++ b/km/torbrowser_strings.xml
@@ -3,10 +3,10 @@
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 
-%1$sត្រូវបាន​បង្កើត​ឡើង​ដោយ​គម្រោង
 Tor ជា​អង្គការ​មិន​រក​ប្រាក់ច
ំណេញ 501(c)(3) មាន​មូលដ្ឋាន​នៅ​សហ
រដ្ឋ​អាមេរិក។
+%1$sត្រូវបាន​បង្កើត​ឡើង​ដោយ​គម្រោង
 Tor ជា​អង្គការ​មិន​រក​ប្រាក់ច
ំណេញ 501(c)(3) មានមូលដ្ឋាននៅសហ
រដ្ឋអាមេរិក។
 
 
-អនុញ្ញាត​តែ​មុខងារ​រុករក​ឯកជន​តែប៉ុណ្ណោះ
+អនុញ្ញាត​តែ​កម្មវិធី​រុករក​ឯកជន​តែប៉ុណ្ណោះ
 
 
 បរិច្ចាគ​ទៅ
​គម្រោង Tor
 
@@ -68,8 +68,8 @@
 សុវត្ថិភាពជាង
 បិទ​មុខងារ​វែបសាយ​ដែល​ជា​រឿយៗ​មាន​គ្រោះថ្នាក់
 ដែល​បណ្ដាល​ឱ្យ​វែបសាយ​មួយច
ំនួន​មិន​ដំណើរការ។
 សុវត្ថិភាពបំផុត
-អនុញ្ញាត​តែ​មុខងារ​វែបសាយ​ត្រូវការ​សម្រាប់​វែបសាយថេរ
 និង​សេវាកម្ម​មូលដ្ឋាន។ 
ការផ្លាស់ប្ដូរ​ទាំងនេះ​ប៉ះពាល់​ទáŸ
…​លើ​រូបភាព មេឌៀ 
និង​ស្គ្រីប។
+អនុញ្ញាត​តែ​មុខងារ​ណាត្រូវការ​សម្រាប់​ស្ថេរភាពនៃគេáž
 áž‘ំព័រ 
និង​សេវាកម្ម​មូលដ្ឋាន។ 
ការផ្លាស់ប្ដូរ​ទាំងនេះ​ប៉ះពាល់​ទáŸ
…​លើ​រូបភាព មេឌៀ 
និង​ស្គ្រីប។
 
 
-ស្នើសុំ​គេហ
ទំព័រ​ជា​ភាសា​អង់គ្លេស 
ដើម្បី​ធ្វើ​ឱ្យ​ប្រសើរ​ឡើង​នៃ​ឯកជនភាព
+ស្នើសុំ​គេហ
ទំព័រ​ជា​ភាសា​អង់គ្លេស 
ដើម្បី​ពង្រឹង​ឯកជនភាព
 

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


[tor-commits] [translation/tbmanual-contentspot] new translations in tbmanual-contentspot

2022-02-22 Thread translation
commit 582f43de941a226d8e6e37f03eb96f7e23e04a5f
Author: Translation commit bot 
Date:   Wed Feb 23 03:46:48 2022 +

new translations in tbmanual-contentspot
---
 contents+km.po | 10 ++
 1 file changed, 10 insertions(+)

diff --git a/contents+km.po b/contents+km.po
index 4fe0dba26f..066f82c458 100644
--- a/contents+km.po
+++ b/contents+km.po
@@ -2950,6 +2950,13 @@ msgid ""
 " privacy and security. It is strongly discouraged to install additional add-"
 "ons, and the Tor Project will not offer support for these configurations."
 msgstr ""
+"ទោះយ៉ាងណា 
មានតែ​កម្មវិធីបន្ថែម​ដែល​បាន​តេស្ត​ជាមួយ​កម្មវិធីរុករុក
 Tor "
+"ប៉ុណ្ណោះ​ត្រូវបាន​ដាក់បញ្ច
ូល​ជាស្រេច។ "
+"ការដំឡើង​កម្មវិធីបន្ថែម​សម្រាប់​កម្មវិធីរុករក​ផ្សេងទៀត
 "
+"អាចនឹង​ធ្វើឱ្យ​ខូច
មុខងារ​ខ្លះ​នៅ
ក្នុង​កម្មវិធីរុករក Tor "
+"ឬបង្ក​បញ្ហ
ា​ធ្ងន់ធ្ងរ​ដែល​ប៉ះពាល់​ដល់​ឯកជនភាព
 និង​សន្ដិសុខ​របស់​អ្នក។ "
+"យើង​ពិតជា​មិន​លើកទឹកច
ិត្ត​ឱ្យ​ដំឡើង​កម្មវិធីបន្ថែម​ផ្សេងទេ
 ហើយ​គម្រោង Tor "
+"នឹង​មិន​ផ្ដល់​ការគាំទ្រ​សម្រាប់​ការកំណត់​ទាំងនោះ​ឡើយ។"
 
 #: https//tb-manual.torproject.org/uninstalling/
 #: (content/uninstalling/contents+en.lrtopic.title)
@@ -3308,6 +3315,9 @@ msgid ""
 "tracking across websites, defending against surveillance, resisting browser "
 "fingerprinting, and circumventing censorship."
 msgstr ""
+"មុខងារ​ចម្បង​មួយច
ំនួន​របស់​កម្មវិធីរុករក Tor 
សម្រាប់ Android រួមមាន៖ "
+"កាត់បន្ថយ​ការតាមដាន​នៅ
លើ​វែបសាយ 
ការពារ​ប្រឆាំងនឹង​ការឃ្លាំមើល
 "
+"ទប់ទល់​នឹងការ​បោះពុម្ព​ខ្ច
ៅដៃ​កម្មវិធីរុករក 
និង​ការជៀសវាង​ការឃ្លាំមើល។"
 
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)

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


[tor-commits] [translation/tbmanual-contentspot] new translations in tbmanual-contentspot

2022-02-22 Thread translation
commit e3880bfaad87fa7eac96d2490d1b656bb93509e9
Author: Translation commit bot 
Date:   Wed Feb 23 03:16:48 2022 +

new translations in tbmanual-contentspot
---
 contents+km.po | 12 ++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/contents+km.po b/contents+km.po
index ab9151652e..4fe0dba26f 100644
--- a/contents+km.po
+++ b/contents+km.po
@@ -8,8 +8,8 @@
 # Emma Peel, 2022
 # Piseth KONG , 2022
 # sophat CHY , 2022
-# Rasy Chum , 2022
 # Moses Ngeth, 2022
+# Rasy Chum , 2022
 # 
 msgid ""
 msgstr ""
@@ -17,7 +17,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2022-02-17 14:39+UTC\n"
 "PO-Revision-Date: 2018-11-14 12:31+\n"
-"Last-Translator: Moses Ngeth, 2022\n"
+"Last-Translator: Rasy Chum , 2022\n"
 "Language-Team: Khmer (https://www.transifex.com/otf/teams/1519/km/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -2916,6 +2916,14 @@ msgid ""
 " displaying correctly, so Tor Browser’s default setting is to allow all "
 "websites to run scripts in \"Standard\" mode."
 msgstr ""
+"អ្នកប្រើប្រាស់ដែល​ត្រូវការ​កម្រិត​សន្ដិសុខ​ខ្ពស់​នáŸ
…ក្នុង​ការរុករក​អ៉ីនធឺណិត "
+"គួរ​កំណត់​កម្មវិធីរុករក Tor 
[កម្រិត​សន្ដិសុខ](../security-settings/) ទៅ
កាន់ "
+"\"សុវត្ថិភាពជាង\" (ដែល​បិទ JavaScript 
សម្រាប់​វែបសាយ​អត់មាន HTTPS) ឬ "
+"\"សុវត្ថិភាពបំផុត\" 
(ដែល​កំណត់​ដូច
គ្នា​សម្រាប់​គ្រប់​វែបសាយ)។ 
ទោះយ៉ាងណា "
+"ការបិទ JavaScript 
នឹង​ធ្វើឱ្យ​វែបសាយ​មួយច
ំនួន​បង្ហាញ​មិនត្រឹមត្រូវ "
+"ដូច
្នេះ​ការកំណត់​លំនាំដើម​នៃ​កម្មវិធីរុករក
 Tor "
+"គឺ​អនុញ្ញាត​ឱ្យ​គ្រប់​វែបសាយ​ទាំងអស់​ដំណើរការ​ស្ក្រីប​នáŸ
…ក្នុង​ទម្រង់ "
+"\"ស្ដង់ដារ\"។"
 
 #: https//tb-manual.torproject.org/plugins/
 #: (content/plugins/contents+en.lrtopic.body)

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


[tor-commits] [tor/main] Add test for circuit_sendme_cell_is_next() when sendme_inc is 100.

2022-02-22 Thread dgoulet
commit 5c88bea84c3535ed908d51d2ed2e9beaa58ee607
Author: Mike Perry 
Date:   Thu Feb 17 00:04:41 2022 +

Add test for circuit_sendme_cell_is_next() when sendme_inc is 100.

This ensures compatibility with old tor.
---
 src/core/or/sendme.c   |  2 +-
 src/core/or/sendme.h   |  2 ++
 src/test/test_sendme.c | 25 +
 3 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/src/core/or/sendme.c b/src/core/or/sendme.c
index 9acef1cc20..494910049e 100644
--- a/src/core/or/sendme.c
+++ b/src/core/or/sendme.c
@@ -338,7 +338,7 @@ record_cell_digest_on_circ(circuit_t *circ, const uint8_t 
*sendme_digest)
  * low in the stack when decrypting or encrypting a cell. The window is only
  * updated once the cell is actually put in the outbuf.
  */
-static bool
+STATIC bool
 circuit_sendme_cell_is_next(int deliver_window, int sendme_inc)
 {
   /* Are we at the limit of the increment and if not, we don't expect next
diff --git a/src/core/or/sendme.h b/src/core/or/sendme.h
index 2abec91a91..bc1daef23d 100644
--- a/src/core/or/sendme.h
+++ b/src/core/or/sendme.h
@@ -73,6 +73,8 @@ STATIC ssize_t build_cell_payload_v1(const uint8_t 
*cell_digest,
 STATIC bool sendme_is_valid(const circuit_t *circ,
 const uint8_t *cell_payload,
 size_t cell_payload_len);
+STATIC bool circuit_sendme_cell_is_next(int deliver_window,
+int sendme_inc);
 
 #endif /* defined(TOR_UNIT_TESTS) */
 
diff --git a/src/test/test_sendme.c b/src/test/test_sendme.c
index eef65a394e..1a046b5c50 100644
--- a/src/test/test_sendme.c
+++ b/src/test/test_sendme.c
@@ -348,6 +348,30 @@ test_package_payload_len(void *arg)
   tor_free(c);
 }
 
+/* Check that circuit_sendme_is_next works with a window of 1000,
+ * and a sendme_inc of 100 (old school tor compat) */
+static void
+test_sendme_is_next1000(void *arg)
+{
+ (void)arg;
+ tt_int_op(circuit_sendme_cell_is_next(1000, 100), OP_EQ, 0);
+ tt_int_op(circuit_sendme_cell_is_next(999, 100), OP_EQ, 0);
+ tt_int_op(circuit_sendme_cell_is_next(901, 100), OP_EQ, 1);
+
+ tt_int_op(circuit_sendme_cell_is_next(900, 100), OP_EQ, 0);
+ tt_int_op(circuit_sendme_cell_is_next(899, 100), OP_EQ, 0);
+ tt_int_op(circuit_sendme_cell_is_next(801, 100), OP_EQ, 1);
+
+ tt_int_op(circuit_sendme_cell_is_next(101, 100), OP_EQ, 1);
+ tt_int_op(circuit_sendme_cell_is_next(100, 100), OP_EQ, 0);
+ tt_int_op(circuit_sendme_cell_is_next(99, 100), OP_EQ, 0);
+ tt_int_op(circuit_sendme_cell_is_next(1, 100), OP_EQ, 1);
+ tt_int_op(circuit_sendme_cell_is_next(0, 100), OP_EQ, 0);
+
+done:
+ ;
+}
+
 struct testcase_t sendme_tests[] = {
   { "v1_record_digest", test_v1_record_digest, TT_FORK,
 NULL, NULL },
@@ -360,6 +384,7 @@ struct testcase_t sendme_tests[] = {
   { "cell_version_validation", test_cell_version_validation, TT_FORK,
 NULL, NULL },
   { "package_payload_len", test_package_payload_len, 0, NULL, NULL },
+  { "sendme_is_next1000", test_sendme_is_next1000, 0, NULL, NULL },
 
   END_OF_TESTCASES
 };



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


[tor-commits] [tor/main] Add changes file

2022-02-22 Thread dgoulet
commit 933e4b4788982d35414d5ecfe54a94479513b136
Author: Mike Perry 
Date:   Fri Feb 4 00:46:50 2022 +

Add changes file
---
 changes/ticket40444 | 5 +
 1 file changed, 5 insertions(+)

diff --git a/changes/ticket40444 b/changes/ticket40444
new file mode 100644
index 00..62aa281889
--- /dev/null
+++ b/changes/ticket40444
@@ -0,0 +1,5 @@
+  o Major features (relay, client, onion services):
+- Implement RTT-based congestion control for exits and onion services,
+  from Proposal 324. Disabled by default. Enabled by the 'cc_alg'
+  consensus parameter. Closes ticket 40444.
+



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


[tor-commits] [tor/main] Add test for sendme_inc validation.

2022-02-22 Thread dgoulet
commit 01bda6c23f58947ad1e20ea6367a5c260f53dfab
Author: Mike Perry 
Date:   Thu Feb 17 17:36:46 2022 +

Add test for sendme_inc validation.
---
 src/test/test_hs_descriptor.c | 40 
 1 file changed, 40 insertions(+)

diff --git a/src/test/test_hs_descriptor.c b/src/test/test_hs_descriptor.c
index ecb7da2450..469e3c39f9 100644
--- a/src/test/test_hs_descriptor.c
+++ b/src/test/test_hs_descriptor.c
@@ -840,6 +840,44 @@ test_build_authorized_client(void *arg)
   testing_disable_prefilled_rng();
 }
 
+static void
+test_validate_sendme(void *arg)
+{
+  (void)arg;
+
+  /* Test basic operation: factors of 2X in either direction are OK */
+  cc_sendme_inc = 31;
+  tt_assert(congestion_control_validate_sendme_increment(15));
+  tt_assert(congestion_control_validate_sendme_increment(62));
+
+  /* Test basic operation: Exceeding 2X fails */
+  cc_sendme_inc = 31;
+  tt_assert(!congestion_control_validate_sendme_increment(14));
+  tt_assert(!congestion_control_validate_sendme_increment(63));
+
+  /* Test potential overflow conditions */
+  cc_sendme_inc = 129;
+  tt_assert(congestion_control_validate_sendme_increment(255));
+  tt_assert(congestion_control_validate_sendme_increment(64));
+  tt_assert(!congestion_control_validate_sendme_increment(63));
+
+  cc_sendme_inc = 127;
+  tt_assert(!congestion_control_validate_sendme_increment(255));
+  tt_assert(congestion_control_validate_sendme_increment(254));
+
+  cc_sendme_inc = 255;
+  tt_assert(congestion_control_validate_sendme_increment(255));
+  tt_assert(congestion_control_validate_sendme_increment(127));
+  tt_assert(!congestion_control_validate_sendme_increment(126));
+
+  /* Test 0 case */
+  cc_sendme_inc = 1;
+  tt_assert(!congestion_control_validate_sendme_increment(0));
+
+done:
+  ;
+}
+
 struct testcase_t hs_descriptor[] = {
   /* Encoding tests. */
   { "cert_encoding", test_cert_encoding, TT_FORK,
@@ -860,6 +898,8 @@ struct testcase_t hs_descriptor[] = {
 NULL, NULL },
   { "decode_bad_signature", test_decode_bad_signature, TT_FORK,
 NULL, NULL },
+  { "validate_sendme", test_validate_sendme, TT_FORK,
+NULL, NULL },
 
   /* Misc. */
   { "version", test_supported_version, TT_FORK,

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


[tor-commits] [tor/main] Add test for sendme_cell_is_next with sendme_inc of 31

2022-02-22 Thread dgoulet
commit 8f4bd8730c1df180e0ef2f5e6565c21b37ae593a
Author: Mike Perry 
Date:   Thu Feb 17 00:26:08 2022 +

Add test for sendme_cell_is_next with sendme_inc of 31
---
 src/test/test_sendme.c | 21 +
 1 file changed, 21 insertions(+)

diff --git a/src/test/test_sendme.c b/src/test/test_sendme.c
index 1a046b5c50..ea7ccd0b3c 100644
--- a/src/test/test_sendme.c
+++ b/src/test/test_sendme.c
@@ -372,6 +372,26 @@ done:
  ;
 }
 
+/* Check that circuit_sendme_is_next works with a window of 31 */
+static void
+test_sendme_is_next(void *arg)
+{
+ (void)arg;
+ tt_int_op(circuit_sendme_cell_is_next(1000, 31), OP_EQ, 0);
+ tt_int_op(circuit_sendme_cell_is_next(970, 31), OP_EQ, 1);
+ tt_int_op(circuit_sendme_cell_is_next(969, 31), OP_EQ, 0);
+
+ /* deliver_window should never get this low, but test anyway */
+ tt_int_op(circuit_sendme_cell_is_next(9, 31), OP_EQ, 1);
+ tt_int_op(circuit_sendme_cell_is_next(8, 31), OP_EQ, 0);
+ tt_int_op(circuit_sendme_cell_is_next(7, 31), OP_EQ, 0);
+ tt_int_op(circuit_sendme_cell_is_next(1, 31), OP_EQ, 0);
+ tt_int_op(circuit_sendme_cell_is_next(0, 31), OP_EQ, 0);
+
+ done:
+  ;
+}
+
 struct testcase_t sendme_tests[] = {
   { "v1_record_digest", test_v1_record_digest, TT_FORK,
 NULL, NULL },
@@ -385,6 +405,7 @@ struct testcase_t sendme_tests[] = {
 NULL, NULL },
   { "package_payload_len", test_package_payload_len, 0, NULL, NULL },
   { "sendme_is_next1000", test_sendme_is_next1000, 0, NULL, NULL },
+  { "sendme_is_next", test_sendme_is_next, 0, NULL, NULL },
 
   END_OF_TESTCASES
 };



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


[tor-commits] [tor/main] Add a delta parameter to Vegas.

2022-02-22 Thread dgoulet
commit a956b20c1d090ee2439f47418a6540d2f95be279
Author: Mike Perry 
Date:   Tue Feb 1 15:32:08 2022 +

Add a delta parameter to Vegas.

This allows us to cap the queue use during steady state. In shadow, this
reduced instances of long circuit queues at relays.
---
 src/core/or/congestion_control_st.h|  2 ++
 src/core/or/congestion_control_vegas.c | 28 ++--
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/src/core/or/congestion_control_st.h 
b/src/core/or/congestion_control_st.h
index ea80868350..2c905772c1 100644
--- a/src/core/or/congestion_control_st.h
+++ b/src/core/or/congestion_control_st.h
@@ -103,6 +103,8 @@ struct vegas_params_t {
 uint16_t alpha;
 /** The queue use above which we decrement cwnd */
 uint16_t beta;
+/** The queue use at which we cap cwnd in steady state */
+uint16_t delta;
 /** Weighted average (percent) between cwnd estimator and
  * piecewise estimator. */
 uint8_t bdp_mix_pct;
diff --git a/src/core/or/congestion_control_vegas.c 
b/src/core/or/congestion_control_vegas.c
index ff825f94cc..5c62787375 100644
--- a/src/core/or/congestion_control_vegas.c
+++ b/src/core/or/congestion_control_vegas.c
@@ -29,27 +29,32 @@
 #define VEGAS_ALPHA_SBWS_DFLT (2*OUTBUF_CELLS-TLS_RECORD_MAX_CELLS)
 #define VEGAS_BETA_SBWS_DFLT (2*OUTBUF_CELLS)
 #define VEGAS_GAMMA_SBWS_DFLT (2*OUTBUF_CELLS)
+#define VEGAS_DELTA_SBWS_DFLT (4*OUTBUF_CELLS)
 
 /* Exits are three hops, so params are based on 3 outbufs of cells */
 #define VEGAS_ALPHA_EXIT_DFLT (3*OUTBUF_CELLS-TLS_RECORD_MAX_CELLS)
 #define VEGAS_BETA_EXIT_DFLT (3*OUTBUF_CELLS)
 #define VEGAS_GAMMA_EXIT_DFLT (3*OUTBUF_CELLS)
+#define VEGAS_DELTA_EXIT_DFLT (5*OUTBUF_CELLS)
 
 /* Onion rends are six hops, so params are based on 6 outbufs of cells */
 #define VEGAS_ALPHA_ONION_DFLT (6*OUTBUF_CELLS-TLS_RECORD_MAX_CELLS)
 #define VEGAS_BETA_ONION_DFLT (6*OUTBUF_CELLS)
 #define VEGAS_GAMMA_ONION_DFLT (6*OUTBUF_CELLS)
+#define VEGAS_DELTA_ONION_DFLT (8*OUTBUF_CELLS)
 
 /* Single Onions are three hops, so params are based on 3 outbufs of cells */
 #define VEGAS_ALPHA_SOS_DFLT (3*OUTBUF_CELLS-TLS_RECORD_MAX_CELLS)
 #define VEGAS_BETA_SOS_DFLT (3*OUTBUF_CELLS)
 #define VEGAS_GAMMA_SOS_DFLT (3*OUTBUF_CELLS)
+#define VEGAS_DELTA_SOS_DFLT (5*OUTBUF_CELLS)
 
 /* Vanguard Onions are 7 hops (or 8 if both sides use vanguards, but that
  * should be rare), so params are based on 7 outbufs of cells */
 #define VEGAS_ALPHA_VG_DFLT (7*OUTBUF_CELLS-TLS_RECORD_MAX_CELLS)
 #define VEGAS_BETA_VG_DFLT (7*OUTBUF_CELLS)
 #define VEGAS_GAMMA_VG_DFLT (7*OUTBUF_CELLS)
+#define VEGAS_DELTA_VG_DFLT (9*OUTBUF_CELLS)
 
 #define VEGAS_BDP_MIX_PCT   100
 
@@ -81,48 +86,59 @@ congestion_control_vegas_set_params(congestion_control_t 
*cc,
 {
   tor_assert(cc->cc_alg == CC_ALG_VEGAS);
   const char *alpha_str = NULL, *beta_str = NULL, *gamma_str = NULL;
-  int alpha, beta, gamma;
+  const char *delta_str = NULL;
+  int alpha, beta, gamma, delta;
 
   switch (path) {
 case CC_PATH_SBWS:
   alpha_str = "cc_vegas_alpha_sbws";
   beta_str = "cc_vegas_beta_sbws";
   gamma_str = "cc_vegas_gamma_sbws";
+  delta_str = "cc_vegas_delta_sbws";
   alpha = VEGAS_ALPHA_SBWS_DFLT;
   beta = VEGAS_BETA_SBWS_DFLT;
   gamma = VEGAS_GAMMA_SBWS_DFLT;
+  delta = VEGAS_DELTA_SBWS_DFLT;
   break;
 case CC_PATH_EXIT:
   alpha_str = "cc_vegas_alpha_exit";
   beta_str = "cc_vegas_beta_exit";
   gamma_str = "cc_vegas_gamma_exit";
+  delta_str = "cc_vegas_delta_exit";
   alpha = VEGAS_ALPHA_EXIT_DFLT;
   beta = VEGAS_BETA_EXIT_DFLT;
   gamma = VEGAS_GAMMA_EXIT_DFLT;
+  delta = VEGAS_DELTA_EXIT_DFLT;
   break;
 case CC_PATH_ONION:
   alpha_str = "cc_vegas_alpha_onion";
   beta_str = "cc_vegas_beta_onion";
   gamma_str = "cc_vegas_gamma_onion";
+  delta_str = "cc_vegas_delta_onion";
   alpha = VEGAS_ALPHA_ONION_DFLT;
   beta = VEGAS_BETA_ONION_DFLT;
   gamma = VEGAS_GAMMA_ONION_DFLT;
+  delta = VEGAS_DELTA_ONION_DFLT;
   break;
 case CC_PATH_ONION_SOS:
   alpha_str = "cc_vegas_alpha_sos";
   beta_str = "cc_vegas_beta_sos";
   gamma_str = "cc_vegas_gamma_sos";
+  delta_str = "cc_vegas_delta_sos";
   alpha = VEGAS_ALPHA_SOS_DFLT;
   beta = VEGAS_BETA_SOS_DFLT;
   gamma = VEGAS_GAMMA_SOS_DFLT;
+  delta = VEGAS_DELTA_SOS_DFLT;
   break;
 case CC_PATH_ONION_VG:
   alpha_str = "cc_vegas_alpha_vg";
   beta_str = "cc_vegas_beta_vg";
   gamma_str = "cc_vegas_gamma_vg";
+  delta_str = "cc_vegas_delta_vg";
   alpha = VEGAS_ALPHA_VG_DFLT;
   beta = VEGAS_BETA_VG_DFLT;
   gamma = VEGAS_GAMMA_VG_DFLT;
+  delta = VEGAS_DELTA_VG_DFLT;
   break;
 default:
   tor_assert(0);
@@ -147,6 +163,12 @@ congestion_control_vegas_set_params(congestion_control_t 
*cc,
   0,
   1000);
 
+  cc->vegas_params.delta =
+   

[tor-commits] [tor/main] Exit slow start at the gamma threshold

2022-02-22 Thread dgoulet
commit 3a3f111b23d6d989dcae5858e2ab597a34f7910b
Author: Mike Perry 
Date:   Sun Jan 23 18:15:12 2022 +

Exit slow start at the gamma threshold

This improves performance and fairness.
---
 src/core/or/congestion_control_vegas.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/core/or/congestion_control_vegas.c 
b/src/core/or/congestion_control_vegas.c
index 0ebff17faf..ff825f94cc 100644
--- a/src/core/or/congestion_control_vegas.c
+++ b/src/core/or/congestion_control_vegas.c
@@ -210,8 +210,8 @@ 
congestion_control_vegas_process_sendme(congestion_control_t *cc,
 cc->cwnd = MAX(cc->cwnd + MAX(CWND_INC_SS(cc), 2*cc->sendme_inc),
vegas_bdp_mix(cc));
   } else {
-/* Congestion signal: Fall back to Vegas equilibrium (BDP) */
-cc->cwnd = vegas_bdp_mix(cc);
+/* Congestion signal: Set cwnd to gamma threshhold */
+cc->cwnd = vegas_bdp_mix(cc) + cc->vegas_params.gamma;
 cc->in_slow_start = 0;
 log_info(LD_CIRC, "CC: TOR_VEGAS exiting slow start");
   }



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


[tor-commits] [tor/main] Only apply more frequent cwnd updates after slow start.

2022-02-22 Thread dgoulet
commit d62f9c9d0058ba3bfa8fe226c697abb05a477c5a
Author: Mike Perry 
Date:   Fri Jan 21 23:20:52 2022 +

Only apply more frequent cwnd updates after slow start.
---
 src/core/or/congestion_control_st.h | 10 --
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/core/or/congestion_control_st.h 
b/src/core/or/congestion_control_st.h
index 0d6bf0b662..ea80868350 100644
--- a/src/core/or/congestion_control_st.h
+++ b/src/core/or/congestion_control_st.h
@@ -206,7 +206,8 @@ struct congestion_control_t {
  *
  * Congestion control literature recommends only one update of cwnd per
  * cwnd worth of acks. However, we can also tune this to be more frequent
- * by increasing the 'cc_cwnd_inc_rate' consensus parameter.
+ * by increasing the 'cc_cwnd_inc_rate' consensus parameter. This tuning
+ * only applies after slow start.
  *
  * If this returns 0 due to high cwnd_inc_rate, the calling code will
  * update every sendme ack.
@@ -215,8 +216,13 @@ static inline uint64_t CWND_UPDATE_RATE(const struct 
congestion_control_t *cc)
 {
   /* We add cwnd_inc_rate*sendme_inc/2 to round to nearest integer number
* of acks */
-  return ((cc->cwnd + cc->cwnd_inc_rate*cc->sendme_inc/2)
+
+  if (cc->in_slow_start) {
+return ((cc->cwnd + cc->sendme_inc/2)/cc->sendme_inc);
+  } else {
+return ((cc->cwnd + cc->cwnd_inc_rate*cc->sendme_inc/2)
/ (cc->cwnd_inc_rate*cc->sendme_inc));
+  }
 }
 
 /**



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


[tor-commits] [tor/main] Make N_EWMA a percentage of CWND update rate, capped by a max value.

2022-02-22 Thread dgoulet
commit 43f6f3fd3a85047fc7fc41e6ce8f924d007b98ee
Author: Mike Perry 
Date:   Fri Jan 21 23:00:35 2022 +

Make N_EWMA a percentage of CWND update rate, capped by a max value.

This proved better in Shadow sims than just a multiple of CWND.
---
 src/core/or/congestion_control_common.c | 56 ++---
 1 file changed, 37 insertions(+), 19 deletions(-)

diff --git a/src/core/or/congestion_control_common.c 
b/src/core/or/congestion_control_common.c
index 93d3e54fcd..fb56014315 100644
--- a/src/core/or/congestion_control_common.c
+++ b/src/core/or/congestion_control_common.c
@@ -49,7 +49,9 @@
 #define CWND_MAX_DFLT (INT32_MAX)
 
 #define BWE_SENDME_MIN_DFLT (5)
-#define EWMA_CWND_COUNT_DFLT (2)
+
+#define N_EWMA_CWND_PCT_DFLT (50)
+#define N_EWMA_MAX_DFLT (10)
 
 /* BDP algorithms for each congestion control algorithms use the piecewise
  * estimattor. See section 3.1.4 of proposal 324. */
@@ -98,7 +100,12 @@ static cc_alg_t cc_alg = CC_ALG_DFLT;
 /**
  * Number of cwnd worth of sendme acks to smooth RTT and BDP with,
  * using N_EWMA */
-static uint8_t ewma_cwnd_cnt;
+static uint8_t n_ewma_cwnd_pct;
+
+/**
+ * Maximum number N for the N-count EWMA averaging of RTT and BDP.
+ */
+static uint8_t n_ewma_max;
 
 /**
  * Minimum number of sendmes before we begin BDP estimates
@@ -174,14 +181,21 @@ congestion_control_new_consensus_params(const 
networkstatus_t *ns)
 BWE_SENDME_MIN_MIN,
 BWE_SENDME_MIN_MAX);
 
-#define EWMA_CWND_COUNT_MIN 1
-#define EWMA_CWND_COUNT_MAX (100)
-  ewma_cwnd_cnt =
-networkstatus_get_param(NULL, "cc_ewma_cwnd_cnt",
-EWMA_CWND_COUNT_DFLT,
-EWMA_CWND_COUNT_MIN,
-EWMA_CWND_COUNT_MAX);
-
+#define N_EWMA_CWND_PCT_MIN 1
+#define N_EWMA_CWND_PCT_MAX (255)
+  n_ewma_cwnd_pct =
+networkstatus_get_param(NULL, "cc_ewma_cwnd_pct",
+N_EWMA_CWND_PCT_DFLT,
+N_EWMA_CWND_PCT_MIN,
+N_EWMA_CWND_PCT_MAX);
+
+#define N_EWMA_MAX_MIN 2
+#define N_EWMA_MAX_MAX (INT32_MAX)
+  n_ewma_max =
+networkstatus_get_param(NULL, "cc_ewma_max",
+N_EWMA_MAX_DFLT,
+N_EWMA_MAX_MIN,
+N_EWMA_MAX_MAX);
 }
 
 /**
@@ -429,14 +443,19 @@ dequeue_timestamp(smartlist_t *timestamps_u64_usecs)
 }
 
 /**
- * Returns the number of sendme acks that will be recieved in the
- * current congestion window size, rounded to nearest int.
+ * Returns the number N of N-count EWMA, for averaging RTT and BDP over
+ * N SENDME acks.
+ *
+ * This N is bracketed between a divisor of the number of acks in a CWND
+ * and a max value. It is always at least 2.
  */
 static inline uint64_t
-sendme_acks_per_cwnd(const congestion_control_t *cc)
+n_ewma_count(const congestion_control_t *cc)
 {
-  /* We add half a sendme_inc to cwnd to round to the nearest int */
-  return ((cc->cwnd + cc->sendme_inc/2)/cc->sendme_inc);
+  uint64_t ewma_cnt = MIN(CWND_UPDATE_RATE(cc)*n_ewma_cwnd_pct/100,
+  n_ewma_max);
+  ewma_cnt = MAX(ewma_cnt, 2);
+  return ewma_cnt;
 }
 
 /**
@@ -815,8 +834,7 @@ congestion_control_update_circuit_rtt(congestion_control_t 
*cc,
 return 0;
   }
 
-  ewma_cnt = ewma_cwnd_cnt*sendme_acks_per_cwnd(cc);
-  ewma_cnt = MAX(ewma_cnt, 2); // Use at least 2
+  ewma_cnt = n_ewma_count(cc);
 
   cc->ewma_rtt_usec = n_count_ewma(rtt, cc->ewma_rtt_usec, ewma_cnt);
 
@@ -939,7 +957,7 @@ congestion_control_update_circuit_bdp(congestion_control_t 
*cc,
   while (smartlist_len(cc->sendme_arrival_timestamps) >
  bwe_sendme_min &&
  (uint64_t)smartlist_len(cc->sendme_arrival_timestamps) >
-   sendme_acks_per_cwnd(cc)) {
+   n_ewma_count(cc)) {
 (void)dequeue_timestamp(cc->sendme_arrival_timestamps);
   }
   int sendme_cnt = smartlist_len(cc->sendme_arrival_timestamps);
@@ -966,7 +984,7 @@ congestion_control_update_circuit_bdp(congestion_control_t 
*cc,
 /* Calculate BDP_EWMA_COUNT N-EWMA */
 cc->bdp[BDP_ALG_SENDME_RATE] =
n_count_ewma(sendme_rate_bdp, cc->bdp[BDP_ALG_SENDME_RATE],
-ewma_cwnd_cnt*sendme_acks_per_cwnd(cc));
+n_ewma_count(cc));
   }
 }
 



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


[tor-commits] [tor/main] Increment by at least 2 sendme_incs in slow start

2022-02-22 Thread dgoulet
commit 1960bf09f3e3fb234678247f1f78d806bb9066ed
Author: Mike Perry 
Date:   Sat Jan 22 19:22:40 2022 +

Increment by at least 2 sendme_incs in slow start
---
 src/core/or/congestion_control_vegas.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/core/or/congestion_control_vegas.c 
b/src/core/or/congestion_control_vegas.c
index d823a5068e..0ebff17faf 100644
--- a/src/core/or/congestion_control_vegas.c
+++ b/src/core/or/congestion_control_vegas.c
@@ -206,8 +206,8 @@ 
congestion_control_vegas_process_sendme(congestion_control_t *cc,
 if (cc->in_slow_start) {
   if (queue_use < cc->vegas_params.gamma && !cc->blocked_chan) {
 /* Grow to BDP immediately, then exponential growth until
- * congestion signal */
-cc->cwnd = MAX(cc->cwnd + CWND_INC_SS(cc),
+ * congestion signal. Increment by at least 2 sendme's worth. */
+cc->cwnd = MAX(cc->cwnd + MAX(CWND_INC_SS(cc), 2*cc->sendme_inc),
vegas_bdp_mix(cc));
   } else {
 /* Congestion signal: Fall back to Vegas equilibrium (BDP) */



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


[tor-commits] [tor/main] Relocate two parameters from circuit scope to global scope.

2022-02-22 Thread dgoulet
commit 3079e2cacc43b17a3a2074a64153cc0f329b5151
Author: Mike Perry 
Date:   Fri Jan 21 19:47:39 2022 +

Relocate two parameters from circuit scope to global scope.

Changes in these will not affect in-progress transfers.
---
 src/core/or/congestion_control_common.c | 51 -
 src/core/or/congestion_control_st.h | 10 ---
 2 files changed, 31 insertions(+), 30 deletions(-)

diff --git a/src/core/or/congestion_control_common.c 
b/src/core/or/congestion_control_common.c
index 4b483a90b0..93d3e54fcd 100644
--- a/src/core/or/congestion_control_common.c
+++ b/src/core/or/congestion_control_common.c
@@ -95,6 +95,16 @@ uint32_t or_conn_lowwater = OR_CONN_LOWWATER_DFLT;
 uint8_t cc_sendme_inc = SENDME_INC_DFLT;
 static cc_alg_t cc_alg = CC_ALG_DFLT;
 
+/**
+ * Number of cwnd worth of sendme acks to smooth RTT and BDP with,
+ * using N_EWMA */
+static uint8_t ewma_cwnd_cnt;
+
+/**
+ * Minimum number of sendmes before we begin BDP estimates
+ */
+static uint8_t bwe_sendme_min;
+
 /**
  * Update global congestion control related consensus parameter values,
  * every consensus update.
@@ -155,6 +165,23 @@ congestion_control_new_consensus_params(const 
networkstatus_t *ns)
 CC_ALG_DFLT,
 CC_ALG_MIN,
 CC_ALG_MAX);
+
+#define BWE_SENDME_MIN_MIN 2
+#define BWE_SENDME_MIN_MAX (20)
+  bwe_sendme_min =
+networkstatus_get_param(NULL, "cc_bwe_min",
+BWE_SENDME_MIN_DFLT,
+BWE_SENDME_MIN_MIN,
+BWE_SENDME_MIN_MAX);
+
+#define EWMA_CWND_COUNT_MIN 1
+#define EWMA_CWND_COUNT_MAX (100)
+  ewma_cwnd_cnt =
+networkstatus_get_param(NULL, "cc_ewma_cwnd_cnt",
+EWMA_CWND_COUNT_DFLT,
+EWMA_CWND_COUNT_MIN,
+EWMA_CWND_COUNT_MAX);
+
 }
 
 /**
@@ -214,22 +241,6 @@ congestion_control_init_params(congestion_control_t *cc,
 CWND_MIN_MIN,
 CWND_MIN_MAX);
 
-#define EWMA_CWND_COUNT_MIN 1
-#define EWMA_CWND_COUNT_MAX (100)
-  cc->ewma_cwnd_cnt =
-networkstatus_get_param(NULL, "cc_ewma_cwnd_cnt",
-EWMA_CWND_COUNT_DFLT,
-EWMA_CWND_COUNT_MIN,
-EWMA_CWND_COUNT_MAX);
-
-#define BWE_SENDME_MIN_MIN 2
-#define BWE_SENDME_MIN_MAX (20)
-  cc->bwe_sendme_min =
-networkstatus_get_param(NULL, "cc_bwe_min",
-BWE_SENDME_MIN_DFLT,
-BWE_SENDME_MIN_MIN,
-BWE_SENDME_MIN_MAX);
-
   /* If the consensus says to use OG sendme, but torrc has
* always-enabled, use the default "always" alg (vegas),
* else use cached conensus alg. */
@@ -804,7 +815,7 @@ congestion_control_update_circuit_rtt(congestion_control_t 
*cc,
 return 0;
   }
 
-  ewma_cnt = cc->ewma_cwnd_cnt*sendme_acks_per_cwnd(cc);
+  ewma_cnt = ewma_cwnd_cnt*sendme_acks_per_cwnd(cc);
   ewma_cnt = MAX(ewma_cnt, 2); // Use at least 2
 
   cc->ewma_rtt_usec = n_count_ewma(rtt, cc->ewma_rtt_usec, ewma_cnt);
@@ -921,12 +932,12 @@ 
congestion_control_update_circuit_bdp(congestion_control_t *cc,
  */
 enqueue_timestamp(cc->sendme_arrival_timestamps, now_usec);
 
-if (smartlist_len(cc->sendme_arrival_timestamps) >= cc->bwe_sendme_min) {
+if (smartlist_len(cc->sendme_arrival_timestamps) >= bwe_sendme_min) {
   /* If we have more sendmes than fit in a cwnd, trim the list.
* Those are not acurrately measuring throughput, if cwnd is
* currently smaller than BDP */
   while (smartlist_len(cc->sendme_arrival_timestamps) >
- cc->bwe_sendme_min &&
+ bwe_sendme_min &&
  (uint64_t)smartlist_len(cc->sendme_arrival_timestamps) >
sendme_acks_per_cwnd(cc)) {
 (void)dequeue_timestamp(cc->sendme_arrival_timestamps);
@@ -955,7 +966,7 @@ congestion_control_update_circuit_bdp(congestion_control_t 
*cc,
 /* Calculate BDP_EWMA_COUNT N-EWMA */
 cc->bdp[BDP_ALG_SENDME_RATE] =
n_count_ewma(sendme_rate_bdp, cc->bdp[BDP_ALG_SENDME_RATE],
-cc->ewma_cwnd_cnt*sendme_acks_per_cwnd(cc));
+ewma_cwnd_cnt*sendme_acks_per_cwnd(cc));
   }
 }
 
diff --git a/src/core/or/congestion_control_st.h 
b/src/core/or/congestion_control_st.h
index 6038072568..0d6bf0b662 100644
--- a/src/core/or/congestion_control_st.h
+++ b/src/core/or/congestion_control_st.h
@@ -177,16 +177,6 @@ struct congestion_control_t {
* signals */
   uint8_t cwnd_inc_rate;
 
-  /**
-   * Number of cwnd worth of sendme acks to smooth RTT and BDP with,
-   * using N_EWMA */
-  uint8_t ewma_cwnd_cnt;
-
-  /**
-   * Minimum number of sendmes before we begin BDP estimates
-   */
-  uint8_t bwe_sendme_min;
-
   /**
* Number of cells to ack with every sendme. Taken from consensus parameter
* and negotiation during circuit setup. */



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


[tor-commits] [tor/main] Guard against 0 time delta in BDP calc.

2022-02-22 Thread dgoulet
commit 4f3a0e39cf18f3d44dd2f4b469edd7055287a478
Author: Mike Perry 
Date:   Fri Jan 21 18:40:49 2022 +

Guard against 0 time delta in BDP calc.

This can only happen in Shadow, but it will cause issues there.
---
 src/core/or/congestion_control_common.c | 35 +++--
 1 file changed, 20 insertions(+), 15 deletions(-)

diff --git a/src/core/or/congestion_control_common.c 
b/src/core/or/congestion_control_common.c
index fe3228262a..4b483a90b0 100644
--- a/src/core/or/congestion_control_common.c
+++ b/src/core/or/congestion_control_common.c
@@ -937,21 +937,26 @@ 
congestion_control_update_circuit_bdp(congestion_control_t *cc,
   timestamp_usec = peek_timestamp(cc->sendme_arrival_timestamps);
   uint64_t delta = now_usec - timestamp_usec;
 
-  /* The acked data is in sendme_cnt-1 chunks, because we are counting the
-   * data that is processed by the other endpoint *between* all of these
-   * sendmes. There's one less gap between the sendmes than the number
-   * of sendmes. */
-  uint64_t cells = (sendme_cnt-1)*cc->sendme_inc;
-
-  /* The bandwidth estimate is cells/delta, which when multiplied
-   * by min RTT obtains the BDP. However, we multiply first to
-   * avoid precision issues with the RTT being close to delta in size. */
-  sendme_rate_bdp = cells*cc->min_rtt_usec/delta;
-
-  /* Calculate BDP_EWMA_COUNT N-EWMA */
-  cc->bdp[BDP_ALG_SENDME_RATE] =
- n_count_ewma(sendme_rate_bdp, cc->bdp[BDP_ALG_SENDME_RATE],
-  cc->ewma_cwnd_cnt*sendme_acks_per_cwnd(cc));
+  /* In Shadow, the time delta between acks can be 0 if there is no
+   * network activity between them. Only update BDP if the delta is
+   * non-zero. */
+  if (delta > 0) {
+/* The acked data is in sendme_cnt-1 chunks, because we are counting
+ * the data that is processed by the other endpoint *between* all of
+ * these sendmes. There's one less gap between the sendmes than the
+ * number of sendmes. */
+uint64_t cells = (sendme_cnt-1)*cc->sendme_inc;
+
+/* The bandwidth estimate is cells/delta, which when multiplied
+ * by min RTT obtains the BDP. However, we multiply first to
+ * avoid precision issues with the RTT being close to delta in size. */
+sendme_rate_bdp = cells*cc->min_rtt_usec/delta;
+
+/* Calculate BDP_EWMA_COUNT N-EWMA */
+cc->bdp[BDP_ALG_SENDME_RATE] =
+   n_count_ewma(sendme_rate_bdp, cc->bdp[BDP_ALG_SENDME_RATE],
+cc->ewma_cwnd_cnt*sendme_acks_per_cwnd(cc));
+  }
 }
 
 /* In-flight BDP will cause the cwnd to drift down when underutilized.



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


[tor-commits] [tor/main] Set new defaults for congestion control parameters.

2022-02-22 Thread dgoulet
commit 0a6cde8756423336c8e6901b55c31d67a2a35245
Author: Mike Perry 
Date:   Fri Jan 21 15:17:20 2022 +

Set new defaults for congestion control parameters.

Defaults determined from Shadow experimentation.

More parameter functionality changes to follow.
---
 src/core/or/congestion_control_common.c | 20 +++-
 src/core/or/congestion_control_common.h |  4 
 src/core/or/congestion_control_flow.c   |  2 +-
 src/core/or/congestion_control_vegas.c  | 10 ++
 4 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/src/core/or/congestion_control_common.c 
b/src/core/or/congestion_control_common.c
index 6d4f34cff8..09c6c04bf3 100644
--- a/src/core/or/congestion_control_common.c
+++ b/src/core/or/congestion_control_common.c
@@ -35,16 +35,18 @@
  *
  * More details for each of the parameters can be found in proposal 324,
  * section 6.5 including tuning notes. */
-#define CIRCWINDOW_INIT (500)
-#define SENDME_INC_DFLT (50)
+#define SENDME_INC_DFLT (TLS_RECORD_MAX_CELLS)
+#define CIRCWINDOW_INIT (4*SENDME_INC_DFLT)
+
 #define CC_ALG_DFLT (CC_ALG_SENDME)
 #define CC_ALG_DFLT_ALWAYS (CC_ALG_VEGAS)
 
-#define CWND_INC_DFLT (50)
-#define CWND_INC_PCT_SS_DFLT (100)
+#define CWND_INC_DFLT (TLS_RECORD_MAX_CELLS)
+#define CWND_INC_PCT_SS_DFLT (50)
 #define CWND_INC_RATE_DFLT (1)
+
+#define CWND_MIN_DFLT (SENDME_INC_DFLT)
 #define CWND_MAX_DFLT (INT32_MAX)
-#define CWND_MIN_DFLT (MAX(100, SENDME_INC_DFLT))
 
 #define BWE_SENDME_MIN_DFLT (5)
 #define EWMA_CWND_COUNT_DFLT (2)
@@ -138,8 +140,8 @@ congestion_control_new_consensus_params(const 
networkstatus_t *ns)
 CWND_MAX_MIN,
 CWND_MAX_MAX);
 
-#define SENDME_INC_MIN 10
-#define SENDME_INC_MAX (1000)
+#define SENDME_INC_MIN 1
+#define SENDME_INC_MAX (255)
   cc_sendme_inc =
 networkstatus_get_param(NULL, "cc_sendme_inc",
 SENDME_INC_DFLT,
@@ -171,7 +173,7 @@ congestion_control_init_params(congestion_control_t *cc,
   const or_options_t *opts = get_options();
   cc->sendme_inc = params->sendme_inc_cells;
 
-#define CWND_INIT_MIN 100
+#define CWND_INIT_MIN SENDME_INC_DFLT
 #define CWND_INIT_MAX (1)
   cc->cwnd =
 networkstatus_get_param(NULL, "cc_cwnd_init",
@@ -203,7 +205,7 @@ congestion_control_init_params(congestion_control_t *cc,
 CWND_INC_RATE_MIN,
 CWND_INC_RATE_MAX);
 
-#define CWND_MIN_MIN 20
+#define CWND_MIN_MIN SENDME_INC_DFLT
 #define CWND_MIN_MAX (1000)
   cc->cwnd_min =
 networkstatus_get_param(NULL, "cc_cwnd_min",
diff --git a/src/core/or/congestion_control_common.h 
b/src/core/or/congestion_control_common.h
index 936cb5887c..1e5a00c942 100644
--- a/src/core/or/congestion_control_common.h
+++ b/src/core/or/congestion_control_common.h
@@ -13,6 +13,10 @@
 #include "core/or/crypt_path_st.h"
 #include "core/or/circuit_st.h"
 
+/* The maximum whole number of cells that can fit in a
+ * full TLS record. This is 31. */
+#define TLS_RECORD_MAX_CELLS ((16 * 1024) / CELL_MAX_NETWORK_SIZE)
+
 typedef struct congestion_control_t congestion_control_t;
 
 /** Wrapper for the free function, set the CC pointer to NULL after free */
diff --git a/src/core/or/congestion_control_flow.c 
b/src/core/or/congestion_control_flow.c
index c8b5ba2473..3a3a9522fd 100644
--- a/src/core/or/congestion_control_flow.c
+++ b/src/core/or/congestion_control_flow.c
@@ -116,7 +116,7 @@ flow_control_new_consensus_params(const networkstatus_t *ns)
   CC_XON_RATE_BYTES_MAX)*RELAY_PAYLOAD_SIZE;
 
 #define CC_XON_EWMA_CNT_DFLT (2)
-#define CC_XON_EWMA_CNT_MIN (1)
+#define CC_XON_EWMA_CNT_MIN (2)
 #define CC_XON_EWMA_CNT_MAX (100)
   xon_ewma_cnt = networkstatus_get_param(ns, "cc_xon_ewma_cnt",
   CC_XON_EWMA_CNT_DFLT,
diff --git a/src/core/or/congestion_control_vegas.c 
b/src/core/or/congestion_control_vegas.c
index 3206821f4c..8e13499aff 100644
--- a/src/core/or/congestion_control_vegas.c
+++ b/src/core/or/congestion_control_vegas.c
@@ -23,11 +23,13 @@
 #include "core/or/channel.h"
 #include "feature/nodelist/networkstatus.h"
 
-#define VEGAS_GAMMA(cc)   (6*(cc)->sendme_inc)
-#define VEGAS_ALPHA(cc)   (3*(cc)->sendme_inc)
-#define VEGAS_BETA(cc)(6*(cc)->sendme_inc)
+#define OUTBUF_CELLS (2*TLS_RECORD_MAX_CELLS)
 
-#define VEGAS_BDP_MIX_PCT   0
+#define VEGAS_ALPHA(cc)   (3*OUTBUF_CELLS-TLS_RECORD_MAX_CELLS)
+#define VEGAS_BETA(cc)(3*OUTBUF_CELLS)
+#define VEGAS_GAMMA(cc)   (3*OUTBUF_CELLS)
+
+#define VEGAS_BDP_MIX_PCT   100
 
 /**
  * The original TCP Vegas used only a congestion window BDP estimator. We



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


[tor-commits] [tor/main] hs: Setup congestion control on service rends using intro data

2022-02-22 Thread dgoulet
commit 6f45ad3771880b9f03bcc0190dce4959df211005
Author: David Goulet 
Date:   Thu Feb 3 21:18:52 2022 +

hs: Setup congestion control on service rends using intro data

Signed-off-by: David Goulet 
---
 src/feature/hs/hs_circuit.c | 18 ++
 src/feature/hs/hs_common.c  | 13 +
 2 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/feature/hs/hs_circuit.c b/src/feature/hs/hs_circuit.c
index 10a6f51eb3..f2953cfb02 100644
--- a/src/feature/hs/hs_circuit.c
+++ b/src/feature/hs/hs_circuit.c
@@ -17,6 +17,8 @@
 #include "core/or/relay.h"
 #include "core/or/crypt_path.h"
 #include "core/or/extendinfo.h"
+#include "core/or/congestion_control_common.h"
+#include "core/crypto/onion_crypto.h"
 #include "feature/client/circpathbias.h"
 #include "feature/hs/hs_cell.h"
 #include "feature/hs/hs_circuit.h"
@@ -408,6 +410,14 @@ launch_rendezvous_point_circuit,(const hs_service_t 
*service,
 tor_assert(circ->hs_ident);
   }
 
+  if (data->cc_enabled) {
+circuit_params_t circ_params = {
+  .cc_enabled = data->cc_enabled,
+  .sendme_inc_cells = congestion_control_sendme_inc(),
+};
+TO_CIRCUIT(circ)->ccontrol = congestion_control_new(_params);
+  }
+
  end:
   extend_info_free(info);
 }
@@ -504,6 +514,14 @@ retry_service_rendezvous_point(const origin_circuit_t 
*circ)
   new_circ->build_state->expiry_time = bstate->expiry_time;
   new_circ->hs_ident = hs_ident_circuit_dup(circ->hs_ident);
 
+  if (TO_CIRCUIT(circ)->ccontrol != NULL) {
+circuit_params_t circ_params = {
+  .cc_enabled = 1,
+  .sendme_inc_cells = TO_CIRCUIT(circ)->ccontrol->sendme_inc,
+};
+TO_CIRCUIT(new_circ)->ccontrol = congestion_control_new(_params);
+  }
+
  done:
   return;
 }
diff --git a/src/feature/hs/hs_common.c b/src/feature/hs/hs_common.c
index 3036ce2710..e326581dd1 100644
--- a/src/feature/hs/hs_common.c
+++ b/src/feature/hs/hs_common.c
@@ -1687,18 +1687,7 @@ hs_get_extend_info_from_lspecs(const smartlist_t *lspecs,
   /* We do have everything for which we think we can connect successfully. */
   info = extend_info_new(NULL, legacy_id,
  (have_ed25519_id) ? _pk : NULL, NULL,
- onion_key, , ap.port,
- /* TODO-324: oh wow, this is a hard one.
-
-The protover summary here needs to explain
-if we support the newer congestion control or
-not.  This may require new specification changes.
-
-Probably there is some analogous service-side
-function that needs to initialize congestion
-control structures based on what the client says.
- */
- NULL, false);
+ onion_key, , ap.port, NULL, false);
  done:
   return info;
 }



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


[tor-commits] [tor/main] cc: Change edge_get_ccontrol() to look at both cpath and on_circuit

2022-02-22 Thread dgoulet
commit d4cf3fadec94169e4610717beaf4597456cbd961
Author: David Goulet 
Date:   Wed Jan 12 11:49:04 2022 -0500

cc: Change edge_get_ccontrol() to look at both cpath and on_circuit

Signed-off-by: David Goulet 
---
 src/core/or/congestion_control_flow.c | 15 +--
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/core/or/congestion_control_flow.c 
b/src/core/or/congestion_control_flow.c
index d61da73627..c8b5ba2473 100644
--- a/src/core/or/congestion_control_flow.c
+++ b/src/core/or/congestion_control_flow.c
@@ -62,12 +62,15 @@ static uint32_t xon_rate_bytes;
 static inline const congestion_control_t *
 edge_get_ccontrol(const edge_connection_t *edge)
 {
-  if (edge->cpath_layer)
-return edge->cpath_layer->ccontrol;
-  else if (edge->on_circuit)
-return edge->on_circuit->ccontrol;
-  else
-return NULL;
+  congestion_control_t *ccontrol = NULL;
+
+  if (edge->on_circuit && edge->on_circuit->ccontrol) {
+ccontrol = edge->on_circuit->ccontrol;
+  } else if (edge->cpath_layer && edge->cpath_layer->ccontrol) {
+ccontrol = edge->cpath_layer->ccontrol;
+  }
+
+  return ccontrol;
 }
 
 /**



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


[tor-commits] [tor/main] Fix NULL pointer deref in logs

2022-02-22 Thread dgoulet
commit 338d00ba924a3884900bac425b35b6a2320da306
Author: Mike Perry 
Date:   Wed Oct 13 21:06:33 2021 +

Fix NULL pointer deref in logs
---
 src/core/or/congestion_control_common.c   | 5 ++---
 src/core/or/congestion_control_nola.c | 3 ++-
 src/core/or/congestion_control_vegas.c| 3 ++-
 src/core/or/congestion_control_westwood.c | 3 ++-
 4 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/core/or/congestion_control_common.c 
b/src/core/or/congestion_control_common.c
index e316b631d1..6fa3bb9a11 100644
--- a/src/core/or/congestion_control_common.c
+++ b/src/core/or/congestion_control_common.c
@@ -1040,9 +1040,8 @@ 
congestion_control_update_circuit_bdp(congestion_control_t *cc,
  "%"PRIu64", "
  "%"PRIu64", "
  "%"PRIu64". ",
- // XXX: actually, is this p_chan here? This is
- // an or_circuit (exit or onion)
- circ->n_chan->global_identifier, circ->n_circ_id,
+ CONST_TO_OR_CIRCUIT(circ)->p_chan->global_identifier,
+ CONST_TO_OR_CIRCUIT(circ)->p_circ_id,
  cc->min_rtt_usec/1000,
  curr_rtt_usec/1000,
  cc->ewma_rtt_usec/1000,
diff --git a/src/core/or/congestion_control_nola.c 
b/src/core/or/congestion_control_nola.c
index 09f88d4699..52d41157a2 100644
--- a/src/core/or/congestion_control_nola.c
+++ b/src/core/or/congestion_control_nola.c
@@ -111,7 +111,8 @@ congestion_control_nola_process_sendme(congestion_control_t 
*cc,
"INFL: %"PRIu64", "
"NCCE: %"PRIu64", "
"SS: %d",
-   circ->n_chan->global_identifier, circ->n_circ_id,
+ CONST_TO_OR_CIRCUIT(circ)->p_chan->global_identifier,
+ CONST_TO_OR_CIRCUIT(circ)->p_circ_id,
  cc->cwnd,
  cc->inflight,
  cc->next_cc_event,
diff --git a/src/core/or/congestion_control_vegas.c 
b/src/core/or/congestion_control_vegas.c
index e7ed838478..d823a5068e 100644
--- a/src/core/or/congestion_control_vegas.c
+++ b/src/core/or/congestion_control_vegas.c
@@ -255,7 +255,8 @@ 
congestion_control_vegas_process_sendme(congestion_control_t *cc,
  "QUSE: %"PRIu64", "
  "NCCE: %"PRIu64", "
  "SS: %d",
- circ->n_chan->global_identifier, circ->n_circ_id,
+   CONST_TO_OR_CIRCUIT(circ)->p_chan->global_identifier,
+   CONST_TO_OR_CIRCUIT(circ)->p_circ_id,
cc->cwnd,
cc->inflight,
vegas_bdp_mix(cc),
diff --git a/src/core/or/congestion_control_westwood.c 
b/src/core/or/congestion_control_westwood.c
index 4b24234212..357cdeb3b9 100644
--- a/src/core/or/congestion_control_westwood.c
+++ b/src/core/or/congestion_control_westwood.c
@@ -213,7 +213,8 @@ 
congestion_control_westwood_process_sendme(congestion_control_t *cc,
  "WRTT: %"PRIu64", "
  "WSIG: %"PRIu64", "
  "SS: %d",
-   circ->n_chan->global_identifier, circ->n_circ_id,
+   CONST_TO_OR_CIRCUIT(circ)->p_chan->global_identifier,
+   CONST_TO_OR_CIRCUIT(circ)->p_circ_id,
cc->cwnd,
cc->inflight,
cc->next_cc_event,



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


[tor-commits] [tor/main] Increase RTT ratio used to detect monotime jumps/stalls.

2022-02-22 Thread dgoulet
commit 8052d0c2c08ac227aaee1134a52d5a3993ba4b10
Author: Mike Perry 
Date:   Fri Jan 21 18:09:48 2022 +

Increase RTT ratio used to detect monotime jumps/stalls.

In Shadow, we saw RTT jumps as high as 1000 naturally.

So let's set this to 5000, to give us some breathing room.
---
 src/core/or/congestion_control_common.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/core/or/congestion_control_common.c 
b/src/core/or/congestion_control_common.c
index 6fa3bb9a11..fe3228262a 100644
--- a/src/core/or/congestion_control_common.c
+++ b/src/core/or/congestion_control_common.c
@@ -698,7 +698,7 @@ static bool
 time_delta_stalled_or_jumped(const congestion_control_t *cc,
  uint64_t old_delta, uint64_t new_delta)
 {
-#define DELTA_DISCREPENCY_RATIO_MAX 100
+#define DELTA_DISCREPENCY_RATIO_MAX 5000
   /* If we have a 0 new_delta, that is definitely a monotime stall */
   if (new_delta == 0) {
 static ratelim_t stall_info_limit = RATELIM_INIT(60);



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


[tor-commits] [tor/main] Properly compute the number or recv cells from deliver_window

2022-02-22 Thread dgoulet
commit 86f81abe3043f273d3aa7166c72d100484af9d73
Author: Mike Perry 
Date:   Wed Dec 1 23:20:17 2021 +

Properly compute the number or recv cells from deliver_window

Without this conversion, there is an implict 1000-recv_cells, which causes
the mod to fail if it is not a factor of 1000.
---
 src/core/or/sendme.c | 9 +++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/core/or/sendme.c b/src/core/or/sendme.c
index ee670f9d51..9acef1cc20 100644
--- a/src/core/or/sendme.c
+++ b/src/core/or/sendme.c
@@ -339,7 +339,7 @@ record_cell_digest_on_circ(circuit_t *circ, const uint8_t 
*sendme_digest)
  * updated once the cell is actually put in the outbuf.
  */
 static bool
-circuit_sendme_cell_is_next(int window, int sendme_inc)
+circuit_sendme_cell_is_next(int deliver_window, int sendme_inc)
 {
   /* Are we at the limit of the increment and if not, we don't expect next
* cell is a SENDME.
@@ -348,8 +348,13 @@ circuit_sendme_cell_is_next(int window, int sendme_inc)
* next cell is a SENDME, the window (either package or deliver) hasn't been
* decremented just yet so when this is called, we are currently processing
* the "window - 1" cell.
+   *
+   * Because deliver_window starts at CIRCWINDOW_START and counts down,
+   * to get the actual number of received cells for this check, we must
+   * first convert to receieved cells, or the modulus operator will fail.
*/
-  if (((window - 1) % sendme_inc) != 0) {
+  tor_assert(deliver_window <= CIRCWINDOW_START);
+  if (((CIRCWINDOW_START - (deliver_window - 1)) % sendme_inc) != 0) {
 return false;
   }
 



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


[tor-commits] [tor/main] Use path type hint for Vegas queue parameters.

2022-02-22 Thread dgoulet
commit b2553bfba28b2e26f09041a3d78fa39c35fd4ac8
Author: Mike Perry 
Date:   Thu Feb 3 12:01:23 2022 +

Use path type hint for Vegas queue parameters.

These parameters will vary depending on path length, especially for onions.
---
 src/app/config/config.c |  1 +
 src/app/config/or_options_st.h  |  3 +
 src/core/mainloop/cpuworker.c   |  8 ++-
 src/core/or/circuitbuild.c  | 16 +-
 src/core/or/congestion_control_common.c | 14 +++--
 src/core/or/congestion_control_common.h | 18 +-
 src/core/or/congestion_control_vegas.c  | 97 -
 src/core/or/congestion_control_vegas.h  |  3 +-
 src/feature/hs/hs_circuit.c | 26 -
 src/feature/hs/hs_client.c  | 14 -
 10 files changed, 174 insertions(+), 26 deletions(-)

diff --git a/src/app/config/config.c b/src/app/config/config.c
index 05bd96fc6a..15addd5be4 100644
--- a/src/app/config/config.c
+++ b/src/app/config/config.c
@@ -676,6 +676,7 @@ static const config_var_t option_vars_[] = {
   V(UseMicrodescriptors, AUTOBOOL, "auto"),
   OBSOLETE("UseNTorHandshake"),
   VAR("__AlwaysCongestionControl",  BOOL, AlwaysCongestionControl, "0"),
+  VAR("__SbwsExit",  BOOL, SbwsExit, "0"),
   V_IMMUTABLE(User,  STRING,   NULL),
   OBSOLETE("UserspaceIOCPBuffers"),
   OBSOLETE("V1AuthoritativeDirectory"),
diff --git a/src/app/config/or_options_st.h b/src/app/config/or_options_st.h
index a1ef7a8cf8..290a2bb9b4 100644
--- a/src/app/config/or_options_st.h
+++ b/src/app/config/or_options_st.h
@@ -604,6 +604,9 @@ struct or_options_t {
   /** Boolean: Switch to override consensus to enable congestion control */
   int AlwaysCongestionControl;
 
+  /** Boolean: Switch to specify this is an sbws measurement exit */
+  int SbwsExit;
+
   int RephistTrackTime; /**< How many seconds do we keep rephist info? */
   /** Should we always fetch our dir info on the mirror schedule (which
* means directly from the authorities) no matter our other config? */
diff --git a/src/core/mainloop/cpuworker.c b/src/core/mainloop/cpuworker.c
index 2cb667615d..ab970259b5 100644
--- a/src/core/mainloop/cpuworker.c
+++ b/src/core/mainloop/cpuworker.c
@@ -391,7 +391,13 @@ cpuworker_onion_handshake_replyfn(void *work_)
   /* If the client asked for congestion control, if our consensus parameter
* allowed it to negotiate as enabled, allocate a congestion control obj. */
   if (rpl.circ_params.cc_enabled) {
-TO_CIRCUIT(circ)->ccontrol = congestion_control_new(_params);
+if (get_options()->SbwsExit) {
+  TO_CIRCUIT(circ)->ccontrol = congestion_control_new(_params,
+  CC_PATH_SBWS);
+} else {
+  TO_CIRCUIT(circ)->ccontrol = congestion_control_new(_params,
+  CC_PATH_EXIT);
+}
   }
 
   if (onionskin_answer(circ,
diff --git a/src/core/or/circuitbuild.c b/src/core/or/circuitbuild.c
index 2326dc2a6d..f62a1d93f5 100644
--- a/src/core/or/circuitbuild.c
+++ b/src/core/or/circuitbuild.c
@@ -1275,7 +1275,21 @@ circuit_finish_handshake(origin_circuit_t *circ,
   }
 
   if (params.cc_enabled) {
-hop->ccontrol = congestion_control_new();
+int circ_len = circuit_get_cpath_len(circ);
+
+if (circ_len == DEFAULT_ROUTE_LEN &&
+circuit_get_cpath_hop(circ, DEFAULT_ROUTE_LEN) == hop) {
+  hop->ccontrol = congestion_control_new(, CC_PATH_EXIT);
+} else if (circ_len == SBWS_ROUTE_LEN &&
+   circuit_get_cpath_hop(circ, SBWS_ROUTE_LEN) == hop) {
+  hop->ccontrol = congestion_control_new(, CC_PATH_SBWS);
+} else {
+  static ratelim_t cc_path_limit = RATELIM_INIT(600);
+  log_fn_ratelim(_path_limit, LOG_WARN, LD_CIRC,
+ "Unexpected path length %d for circuit",
+ circ_len);
+  hop->ccontrol = congestion_control_new(, CC_PATH_EXIT);
+}
   }
 
   hop->state = CPATH_STATE_OPEN;
diff --git a/src/core/or/congestion_control_common.c 
b/src/core/or/congestion_control_common.c
index 09c6c04bf3..e316b631d1 100644
--- a/src/core/or/congestion_control_common.c
+++ b/src/core/or/congestion_control_common.c
@@ -168,7 +168,8 @@ congestion_control_new_consensus_params(const 
networkstatus_t *ns)
  */
 static void
 congestion_control_init_params(congestion_control_t *cc,
-   const circuit_params_t *params)
+   const circuit_params_t *params,
+   cc_path_t path)
 {
   const or_options_t *opts = get_options();
   cc->sendme_inc = params->sendme_inc_cells;
@@ -266,7 +267,7 @@ congestion_control_init_params(congestion_control_t *cc,
   if (cc->cc_alg == CC_ALG_WESTWOOD) {
 congestion_control_westwood_set_params(cc);
   } else if (cc->cc_alg == CC_ALG_VEGAS) {
-congestion_control_vegas_set_params(cc);
+congestion_control_vegas_set_params(cc, path);
   } else if (cc->cc_alg == 

[tor-commits] [tor/main] hs: Encode flow control value in the descriptor

2022-02-22 Thread dgoulet
commit 95639f35aede81bfde8bd4ee1616e10048176cc7
Author: David Goulet 
Date:   Thu Nov 4 10:26:04 2021 -0400

hs: Encode flow control value in the descriptor

This simply adds the "flow-control" line, as detailed in prop324, to the
descriptor. No decoding is done at this commit.

Part of #40506
---
 src/feature/dirparse/parsecommon.h |  1 +
 src/feature/hs/hs_descriptor.c | 12 
 2 files changed, 13 insertions(+)

diff --git a/src/feature/dirparse/parsecommon.h 
b/src/feature/dirparse/parsecommon.h
index 0f343e9c62..675c5f68d5 100644
--- a/src/feature/dirparse/parsecommon.h
+++ b/src/feature/dirparse/parsecommon.h
@@ -172,6 +172,7 @@ typedef enum {
   R3_DESC_AUTH_KEY,
   R3_DESC_AUTH_CLIENT,
   R3_ENCRYPTED,
+  R3_FLOW_CONTROL,
 
   R_IPO_IDENTIFIER,
   R_IPO_IP_ADDRESS,
diff --git a/src/feature/hs/hs_descriptor.c b/src/feature/hs/hs_descriptor.c
index a37eab5b5d..80273c27b1 100644
--- a/src/feature/hs/hs_descriptor.c
+++ b/src/feature/hs/hs_descriptor.c
@@ -61,6 +61,8 @@
 #include "trunnel/ed25519_cert.h" /* Trunnel interface. */
 #include "feature/hs/hs_descriptor.h"
 #include "core/or/circuitbuild.h"
+#include "core/or/congestion_control_common.h"
+#include "core/or/protover.h"
 #include "lib/crypt_ops/crypto_rand.h"
 #include "lib/crypt_ops/crypto_util.h"
 #include "feature/dirparse/parsecommon.h"
@@ -69,6 +71,7 @@
 #include "feature/nodelist/torcert.h" /* tor_cert_encode_ed22519() */
 #include "lib/memarea/memarea.h"
 #include "lib/crypt_ops/crypto_format.h"
+#include "core/or/versions.h"
 
 #include "core/or/extend_info_st.h"
 
@@ -92,6 +95,7 @@
 #define str_ip_legacy_key "legacy-key"
 #define str_ip_legacy_key_cert "legacy-key-cert"
 #define str_intro_point_start "\n" str_intro_point " "
+#define str_flow_control "flow-control"
 /* Constant string value for the construction to encrypt the encrypted data
  * section. */
 #define str_enc_const_superencryption "hsdir-superencrypted-data"
@@ -138,6 +142,7 @@ static token_rule_t hs_desc_encrypted_v3_token_table[] = {
   T1_START(str_create2_formats, R3_CREATE2_FORMATS, CONCAT_ARGS, NO_OBJ),
   T01(str_intro_auth_required, R3_INTRO_AUTH_REQUIRED, GE(1), NO_OBJ),
   T01(str_single_onion, R3_SINGLE_ONION_SERVICE, ARGS, NO_OBJ),
+  T01(str_flow_control, R3_FLOW_CONTROL, GE(2), NO_OBJ),
   END_OF_TABLE
 };
 
@@ -765,6 +770,13 @@ get_inner_encrypted_layer_plaintext(const hs_descriptor_t 
*desc)
 if (desc->encrypted_data.single_onion_service) {
   smartlist_add_asprintf(lines, "%s\n", str_single_onion);
 }
+
+if (congestion_control_enabled()) {
+  /* Add flow control line into the descriptor. */
+  smartlist_add_asprintf(lines, "%s %s %u\n", str_flow_control,
+ protover_get_supported(PRT_FLOWCTRL),
+ congestion_control_sendme_inc());
+}
   }
 
   /* Build the introduction point(s) section. */



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


[tor-commits] [tor/main] hs: Build INTRODUCE extension in the encrypted section

2022-02-22 Thread dgoulet
commit 38e9d9b465f5ae825d054b7baf06a851ad6b371a
Author: David Goulet 
Date:   Thu Feb 3 21:06:28 2022 +

hs: Build INTRODUCE extension in the encrypted section

Signed-off-by: David Goulet 
---
 src/feature/hs/hs_cell.c| 28 ++--
 src/feature/hs/hs_cell.h|  2 ++
 src/feature/hs/hs_circuit.c |  8 
 3 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/src/feature/hs/hs_cell.c b/src/feature/hs/hs_cell.c
index 116395b3c8..4b961a6add 100644
--- a/src/feature/hs/hs_cell.c
+++ b/src/feature/hs/hs_cell.c
@@ -18,6 +18,7 @@
 #include "core/or/origin_circuit_st.h"
 
 /* Trunnel. */
+#include "trunnel/congestion_control.h"
 #include "trunnel/ed25519_cert.h"
 #include "trunnel/extension.h"
 #include "trunnel/hs/cell_establish_intro.h"
@@ -372,6 +373,26 @@ introduce1_encrypt_and_encode(trn_cell_introduce1_t *cell,
   tor_free(encrypted);
 }
 
+/** Build and set the INTRODUCE congestion control extension in the given
+ * extensions. */
+static void
+build_introduce_cc_extension(trn_extension_t *extensions)
+{
+  trn_extension_field_t *field = NULL;
+
+  /* Build CC request extension. */
+  field = trn_extension_field_new();
+  trn_extension_field_set_field_type(field,
+ TRUNNEL_EXT_TYPE_CC_FIELD_REQUEST);
+
+  /* No payload indicating a request to use congestion control. */
+  trn_extension_field_set_field_len(field, 0);
+
+  /* Build final extension. */
+  trn_extension_add_fields(extensions, field);
+  trn_extension_set_num(extensions, trn_extension_get_num(extensions) + 1);
+}
+
 /** Using the INTRODUCE1 data, setup the ENCRYPTED section in cell. This means
  * set it, encrypt it and encode it. */
 static void
@@ -387,10 +408,13 @@ introduce1_set_encrypted(trn_cell_introduce1_t *cell,
   enc_cell = trn_cell_introduce_encrypted_new();
   tor_assert(enc_cell);
 
-  /* Set extension data. None are used. */
+  /* Setup extension(s) if any. */
   ext = trn_extension_new();
   tor_assert(ext);
-  trn_extension_set_num(ext, 0);
+  /* Build congestion control extension is enabled. */
+  if (data->cc_enabled) {
+build_introduce_cc_extension(ext);
+  }
   trn_cell_introduce_encrypted_set_extensions(enc_cell, ext);
 
   /* Set the rendezvous cookie. */
diff --git a/src/feature/hs/hs_cell.h b/src/feature/hs/hs_cell.h
index c25fd45567..43be038a93 100644
--- a/src/feature/hs/hs_cell.h
+++ b/src/feature/hs/hs_cell.h
@@ -40,6 +40,8 @@ typedef struct hs_cell_introduce1_data_t {
   const curve25519_keypair_t *client_kp;
   /** Rendezvous point link specifiers. */
   smartlist_t *link_specifiers;
+  /** Congestion control parameters. */
+  unsigned int cc_enabled : 1;
 } hs_cell_introduce1_data_t;
 
 /** This data structure contains data that we need to parse an INTRODUCE2 cell
diff --git a/src/feature/hs/hs_circuit.c b/src/feature/hs/hs_circuit.c
index 3347bdca07..10a6f51eb3 100644
--- a/src/feature/hs/hs_circuit.c
+++ b/src/feature/hs/hs_circuit.c
@@ -37,6 +37,7 @@
 #include "trunnel/ed25519_cert.h"
 #include "trunnel/hs/cell_establish_intro.h"
 
+#include "core/or/congestion_control_st.h"
 #include "core/or/cpath_build_state_st.h"
 #include "core/or/crypt_path_st.h"
 #include "feature/nodelist/node_st.h"
@@ -549,6 +550,7 @@ setup_introduce1_data(const hs_desc_intro_point_t *ip,
 /* We can't rendezvous without the curve25519 onion key. */
 goto end;
   }
+
   /* Success, we have valid introduce data. */
   ret = 0;
 
@@ -1072,6 +1074,12 @@ hs_circ_send_introduce1(origin_circuit_t *intro_circ,
 goto close;
   }
 
+  /* If the rend circ was set up for congestion control, add that to the
+   * intro data, to signal it in an extension */
+  if (TO_CIRCUIT(rend_circ)->ccontrol) {
+intro1_data.cc_enabled = 1;
+  }
+
   /* Final step before we encode a cell, we setup the circuit identifier which
* will generate both the rendezvous cookie and client keypair for this
* connection. Those are put in the ident. */



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


[tor-commits] [tor/main] hs: Decode and cache the INTRODUCE cell congestion control extension

2022-02-22 Thread dgoulet
commit 729dd14fdec9ece47142a5dc1434d32da109982e
Author: David Goulet 
Date:   Thu Feb 3 22:44:25 2022 +

hs: Decode and cache the INTRODUCE cell congestion control extension

Signed-off-by: David Goulet 
---
 src/feature/hs/hs_cell.c | 41 +
 src/feature/hs/hs_cell.h |  4 
 2 files changed, 45 insertions(+)

diff --git a/src/feature/hs/hs_cell.c b/src/feature/hs/hs_cell.c
index 4b961a6add..b7ab68f7c4 100644
--- a/src/feature/hs/hs_cell.c
+++ b/src/feature/hs/hs_cell.c
@@ -14,6 +14,7 @@
 #include "feature/hs/hs_cell.h"
 #include "feature/hs/hs_ob.h"
 #include "core/crypto/hs_ntor.h"
+#include "core/or/congestion_control_common.h"
 
 #include "core/or/origin_circuit_st.h"
 
@@ -783,6 +784,31 @@ 
get_introduce2_keys_and_verify_mac(hs_cell_introduce2_data_t *data,
   return intro_keys_result;
 }
 
+/** Parse the given INTRODUCE cell extension. Update the data object
+ * accordingly depending on the extension. */
+static void
+parse_introduce_cell_extension(hs_cell_introduce2_data_t *data,
+   const trn_extension_field_t *field)
+{
+  trn_extension_field_cc_t *cc_field = NULL;
+
+  tor_assert(data);
+  tor_assert(field);
+
+  switch (trn_extension_field_get_field_type(field)) {
+  case TRUNNEL_EXT_TYPE_CC_FIELD_REQUEST:
+/* CC requests, enable it. */
+data->cc_enabled = 1;
+data->pv.protocols_known = 1;
+data->pv.supports_congestion_control = data->cc_enabled;
+break;
+  default:
+break;
+  }
+
+  trn_extension_field_cc_free(cc_field);
+}
+
 /** Parse the INTRODUCE2 cell using data which contains everything we need to
  * do so and contains the destination buffers of information we extract and
  * compute from the cell. Return 0 on success else a negative value. The
@@ -911,6 +937,21 @@ hs_cell_parse_introduce2(hs_cell_introduce2_data_t *data,
 smartlist_add(data->link_specifiers, lspec_dup);
   }
 
+  /* Extract any extensions. */
+  const trn_extension_t *extensions =
+trn_cell_introduce_encrypted_get_extensions(enc_cell);
+  if (extensions != NULL) {
+for (size_t idx = 0; idx < trn_extension_get_num(extensions); idx++) {
+  const trn_extension_field_t *field =
+trn_extension_getconst_fields(extensions, idx);
+  if (BUG(field == NULL)) {
+/* The number of extensions should match the number of fields. */
+break;
+  }
+  parse_introduce_cell_extension(data, field);
+}
+  }
+
   /* Success. */
   ret = 0;
   log_info(LD_REND, "Valid INTRODUCE2 cell. Launching rendezvous circuit.");
diff --git a/src/feature/hs/hs_cell.h b/src/feature/hs/hs_cell.h
index 43be038a93..c76a0690a8 100644
--- a/src/feature/hs/hs_cell.h
+++ b/src/feature/hs/hs_cell.h
@@ -84,6 +84,10 @@ typedef struct hs_cell_introduce2_data_t {
   smartlist_t *link_specifiers;
   /** Replay cache of the introduction point. */
   replaycache_t *replay_cache;
+  /** Flow control negotiation parameters. */
+  protover_summary_flags_t pv;
+  /** Congestion control parameters. */
+  unsigned int cc_enabled : 1;
 } hs_cell_introduce2_data_t;
 
 /* Build cell API. */



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


[tor-commits] [tor/main] hs: Fix tests for congestion control

2022-02-22 Thread dgoulet
commit 27d948dab8f579890abdef155d20062938b84259
Author: David Goulet 
Date:   Thu Feb 3 12:11:42 2022 +

hs: Fix tests for congestion control
---
 src/test/test_hs_client.c |  4 
 src/test/test_hs_descriptor.c |  5 +
 src/test/test_protover.c  | 17 -
 3 files changed, 9 insertions(+), 17 deletions(-)

diff --git a/src/test/test_hs_client.c b/src/test/test_hs_client.c
index 0fe71ed7bd..11a5589d21 100644
--- a/src/test/test_hs_client.c
+++ b/src/test/test_hs_client.c
@@ -54,6 +54,9 @@
 #include "core/or/origin_circuit_st.h"
 #include "core/or/socks_request_st.h"
 
+#define TOR_CONGESTION_CONTROL_PRIVATE
+#include "core/or/congestion_control_common.h"
+
 static int
 mock_connection_ap_handshake_send_begin(entry_connection_t *ap_conn)
 {
@@ -771,6 +774,7 @@ test_desc_has_arrived_cleanup(void *arg)
   (void) arg;
 
   hs_init();
+  congestion_control_set_cc_enabled();
 
   MOCK(networkstatus_get_reasonably_live_consensus,
mock_networkstatus_get_reasonably_live_consensus);
diff --git a/src/test/test_hs_descriptor.c b/src/test/test_hs_descriptor.c
index ec6c8ba6b4..ecb7da2450 100644
--- a/src/test/test_hs_descriptor.c
+++ b/src/test/test_hs_descriptor.c
@@ -24,6 +24,9 @@
 #include "test/log_test_helpers.h"
 #include "test/rng_test_helpers.h"
 
+#define TOR_CONGESTION_CONTROL_PRIVATE
+#include "core/or/congestion_control_common.h"
+
 #ifdef HAVE_CFLAG_WOVERLENGTH_STRINGS
 DISABLE_GCC_WARNING("-Woverlength-strings")
 /* We allow huge string constants in the unit tests, but not in the code
@@ -247,6 +250,8 @@ test_decode_descriptor(void *arg)
 
   (void) arg;
 
+  congestion_control_set_cc_enabled();
+
   ret = ed25519_keypair_generate(_kp, 0);
   tt_int_op(ret, OP_EQ, 0);
   desc = hs_helper_build_hs_desc_with_ip(_kp);
diff --git a/src/test/test_protover.c b/src/test/test_protover.c
index 7ad02cb9c1..9d14fd678a 100644
--- a/src/test/test_protover.c
+++ b/src/test/test_protover.c
@@ -355,7 +355,6 @@ test_protover_supports_version(void *arg)
 #define PROTOVER_PADDING_V1 1
 
 #define PROTOVER_FLOWCTRL_V1 1
-#define PROTOVER_FLOWCTRL_V2 2
 
 #define PROTOVER_RELAY_NTOR_V3 4
 
@@ -704,22 +703,6 @@ test_protover_summarize_flags(void *args)
 
   /* Now check version exceptions */
 
-  /* Congestion control. */
-  memset(, 0, sizeof(flags));
-  summarize_protover_flags(,
-   PROTOVER("FlowCtrl", PROTOVER_FLOWCTRL_V2),
-   NULL);
-  summarize_protover_flags(,
-   PROTOVER("Relay", PROTOVER_RELAY_NTOR_V3),
-   NULL);
-  DEBUG_PROTOVER(flags);
-  tt_int_op(flags.protocols_known, OP_EQ, 1);
-  tt_int_op(flags.supports_congestion_control, OP_EQ, 1);
-  /* Now clear those flags, and check the rest are zero */
-  flags.protocols_known = 0;
-  flags.supports_congestion_control = 0;
-  tt_mem_op(, OP_EQ, _flags, sizeof(flags));
-
   /* EXTEND2 cell support */
   memset(, 0, sizeof(flags));
   summarize_protover_flags(, NULL, "Tor 0.2.4.8-alpha");



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


[tor-commits] [tor/main] hs: Decode flow-control line

2022-02-22 Thread dgoulet
commit 89f5eeefb83231c6eb7b8a857b173a9f962f3c0d
Author: David Goulet 
Date:   Thu Feb 3 20:06:36 2022 +

hs: Decode flow-control line

This puts the flow control version (unparsed) in the descriptor. The
client doesn't use it yet.

Signed-off-by: David Goulet 
---
 src/feature/hs/hs_descriptor.c | 18 ++
 src/feature/hs/hs_descriptor.h |  4 
 src/test/hs_test_helpers.c |  6 ++
 src/test/test_protover.c   | 25 +++--
 4 files changed, 51 insertions(+), 2 deletions(-)

diff --git a/src/feature/hs/hs_descriptor.c b/src/feature/hs/hs_descriptor.c
index 80273c27b1..523ededf8c 100644
--- a/src/feature/hs/hs_descriptor.c
+++ b/src/feature/hs/hs_descriptor.c
@@ -2347,6 +2347,23 @@ desc_decode_encrypted_v3(const hs_descriptor_t *desc,
 desc_encrypted_out->single_onion_service = 1;
   }
 
+  /* Get flow control if any. */
+  tok = find_opt_by_keyword(tokens, R3_FLOW_CONTROL);
+  if (tok) {
+int ok;
+
+tor_asprintf(_encrypted_out->flow_control_pv, "FlowCtrl=%s",
+ tok->args[0]);
+uint8_t sendme_inc =
+  (uint8_t) tor_parse_uint64(tok->args[1], 10, 0, UINT8_MAX, , NULL);
+if (!ok || !congestion_control_validate_sendme_increment(sendme_inc)) {
+  log_warn(LD_REND, "Service descriptor flow control sendme "
+"value is invalid");
+  goto err;
+}
+desc_encrypted_out->sendme_inc = sendme_inc;
+  }
+
   /* Initialize the descriptor's introduction point list before we start
* decoding. Having 0 intro point is valid. Then decode them all. */
   desc_encrypted_out->intro_points = smartlist_new();
@@ -2757,6 +2774,7 @@ 
hs_desc_encrypted_data_free_contents(hs_desc_encrypted_data_t *desc)
   hs_desc_intro_point_free(ip));
 smartlist_free(desc->intro_points);
   }
+  tor_free(desc->flow_control_pv);
   memwipe(desc, 0, sizeof(*desc));
 }
 
diff --git a/src/feature/hs/hs_descriptor.h b/src/feature/hs/hs_descriptor.h
index d959431369..8f5ee6a2f1 100644
--- a/src/feature/hs/hs_descriptor.h
+++ b/src/feature/hs/hs_descriptor.h
@@ -167,6 +167,10 @@ typedef struct hs_desc_encrypted_data_t {
   /** Is this descriptor a single onion service? */
   unsigned int single_onion_service : 1;
 
+  /** Flow control protocol version line. */
+  char *flow_control_pv;
+  uint8_t sendme_inc;
+
   /** A list of intro points. Contains hs_desc_intro_point_t objects. */
   smartlist_t *intro_points;
 } hs_desc_encrypted_data_t;
diff --git a/src/test/hs_test_helpers.c b/src/test/hs_test_helpers.c
index 2af4f71d72..20b225ba4a 100644
--- a/src/test/hs_test_helpers.c
+++ b/src/test/hs_test_helpers.c
@@ -4,6 +4,7 @@
 #define HS_CLIENT_PRIVATE
 
 #include "core/or/or.h"
+#include "core/or/versions.h"
 #include "lib/crypt_ops/crypto_ed25519.h"
 #include "test/test.h"
 #include "feature/nodelist/torcert.h"
@@ -186,6 +187,7 @@ hs_helper_build_hs_desc_impl(unsigned int no_ip,
   desc->encrypted_data.create2_ntor = 1;
   desc->encrypted_data.intro_auth_types = smartlist_new();
   desc->encrypted_data.single_onion_service = 1;
+  desc->encrypted_data.flow_control_pv = tor_strdup("FlowCtrl=1-2");
   smartlist_add(desc->encrypted_data.intro_auth_types, tor_strdup("ed25519"));
   desc->encrypted_data.intro_points = smartlist_new();
   if (!no_ip) {
@@ -332,6 +334,10 @@ hs_helper_desc_equal(const hs_descriptor_t *desc1,
   /* Encrypted data section. */
   tt_uint_op(desc1->encrypted_data.create2_ntor, OP_EQ,
  desc2->encrypted_data.create2_ntor);
+  tt_uint_op(desc1->encrypted_data.single_onion_service, OP_EQ,
+ desc2->encrypted_data.single_onion_service);
+  tt_str_op(desc1->encrypted_data.flow_control_pv, OP_EQ,
+desc2->encrypted_data.flow_control_pv);
 
   /* Authentication type. */
   tt_int_op(!!desc1->encrypted_data.intro_auth_types, OP_EQ,
diff --git a/src/test/test_protover.c b/src/test/test_protover.c
index ae40556220..7ad02cb9c1 100644
--- a/src/test/test_protover.c
+++ b/src/test/test_protover.c
@@ -355,6 +355,9 @@ test_protover_supports_version(void *arg)
 #define PROTOVER_PADDING_V1 1
 
 #define PROTOVER_FLOWCTRL_V1 1
+#define PROTOVER_FLOWCTRL_V2 2
+
+#define PROTOVER_RELAY_NTOR_V3 4
 
 /* Make sure we haven't forgotten any supported protocols */
 static void
@@ -644,7 +647,8 @@ test_protover_vote_roundtrip_ours(void *args)
 "supports_establish_intro_dos_extension: %d,\n" \
 "supports_v3_hsdir: %d,\n" \
 "supports_v3_rendezvous_point: %d,\n" \
-"supports_hs_setup_padding: %d.", \
+"supports_hs_setup_padding: %d,\n" \
+"supports_congestion_control: %d.", \
 (flags).protocols_known, \
 (flags).supports_extend2_cells, \
 (flags).supports_accepting_ipv6_extends, \
@@ -656,7 +660,8 @@ test_protover_vote_roundtrip_ours(void *args)
 (flags).supports_establish_intro_dos_extension, \
 (flags).supports_v3_hsdir, \
   

[tor-commits] [tor/main] hs: Republish onion descriptor on sendme_inc change

2022-02-22 Thread dgoulet
commit 0eaf0e8a31979621f8a2cfb1671cc4f02fe92b87
Author: David Goulet 
Date:   Thu Feb 3 19:04:34 2022 +

hs: Republish onion descriptor on sendme_inc change

Republishing is necessary to ensure that clients connect using the correct
sendme_inc upon any change. Additionally, introduction points must be
re-chosen, so that cached descriptors with old values are not usable.

We do not expect to change sendme_inc, unless cell size or TLS record size
changes, so this should be rare.

Signed-off-by: David Goulet 
---
 src/feature/hs/hs_service.c  | 29 +
 src/feature/hs/hs_service.h  |  1 +
 src/feature/nodelist/networkstatus.c |  1 +
 3 files changed, 31 insertions(+)

diff --git a/src/feature/hs/hs_service.c b/src/feature/hs/hs_service.c
index bf99ad69bd..ff34e5dc44 100644
--- a/src/feature/hs/hs_service.c
+++ b/src/feature/hs/hs_service.c
@@ -16,6 +16,7 @@
 #include "core/or/circuitbuild.h"
 #include "core/or/circuitlist.h"
 #include "core/or/circuituse.h"
+#include "core/or/congestion_control_common.h"
 #include "core/or/extendinfo.h"
 #include "core/or/relay.h"
 #include "feature/client/circpathbias.h"
@@ -3690,6 +3691,34 @@ hs_service_map_has_changed(void)
   rescan_periodic_events(get_options());
 }
 
+/** Called when a new consensus has arrived and has been set globally. The new
+ * consensus is pointed by ns. */
+void
+hs_service_new_consensus_params(const networkstatus_t *ns)
+{
+  tor_assert(ns);
+
+  /* This value is the new value from the consensus. */
+  uint8_t current_sendme_inc = congestion_control_sendme_inc();
+
+  if (!hs_service_map)
+return;
+
+  /* Check each service and look if their descriptor contains a different
+   * sendme increment. If so, nuke all intro points by forcing an expiration
+   * which will lead to rebuild and reupload with the new value. */
+  FOR_EACH_SERVICE_BEGIN(service) {
+FOR_EACH_DESCRIPTOR_BEGIN(service, desc) {
+  if (desc->desc &&
+  desc->desc->encrypted_data.sendme_inc != current_sendme_inc) {
+/* Passing the maximum time_t will force expiration of all intro points
+ * and thus will lead to a rebuild of the descriptor. */
+cleanup_intro_points(service, LONG_MAX);
+  }
+} FOR_EACH_DESCRIPTOR_END;
+  } FOR_EACH_SERVICE_END;
+}
+
 /** Upload an encoded descriptor in encoded_desc of the given version. This
  * descriptor is for the service identity_pk and blinded_pk used to setup the
  * directory connection identifier. It is uploaded to the directory hsdir_rs
diff --git a/src/feature/hs/hs_service.h b/src/feature/hs/hs_service.h
index c48f470245..95461289ce 100644
--- a/src/feature/hs/hs_service.h
+++ b/src/feature/hs/hs_service.h
@@ -355,6 +355,7 @@ smartlist_t *hs_service_get_metrics_stores(void);
 
 void hs_service_map_has_changed(void);
 void hs_service_dir_info_changed(void);
+void hs_service_new_consensus_params(const networkstatus_t *ns);
 void hs_service_run_scheduled_events(time_t now);
 void hs_service_circuit_has_opened(origin_circuit_t *circ);
 int hs_service_receive_intro_established(origin_circuit_t *circ,
diff --git a/src/feature/nodelist/networkstatus.c 
b/src/feature/nodelist/networkstatus.c
index 77e2b547f5..41fd312295 100644
--- a/src/feature/nodelist/networkstatus.c
+++ b/src/feature/nodelist/networkstatus.c
@@ -1704,6 +1704,7 @@ notify_after_networkstatus_changes(void)
   router_new_consensus_params(c);
   congestion_control_new_consensus_params(c);
   flow_control_new_consensus_params(c);
+  hs_service_new_consensus_params(c);
 
   /* Maintenance of our L2 guard list */
   maintain_layer2_guards();



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


[tor-commits] [tor/main] cc: Export sendme_inc validation into public function

2022-02-22 Thread dgoulet
commit 02f4e7b42e2158039a138c9cb68211304a754a1d
Author: David Goulet 
Date:   Thu Feb 3 22:43:58 2022 +

cc: Export sendme_inc validation into public function

This is needed for client validation of server descriptor value,
before launching a rend/intro.
---
 src/core/or/congestion_control_common.c | 24 
 src/core/or/congestion_control_common.h |  1 +
 2 files changed, 25 insertions(+)

diff --git a/src/core/or/congestion_control_common.c 
b/src/core/or/congestion_control_common.c
index e999f435ed..6d4f34cff8 100644
--- a/src/core/or/congestion_control_common.c
+++ b/src/core/or/congestion_control_common.c
@@ -1312,6 +1312,30 @@ congestion_control_build_ext_response(const 
circuit_params_t *our_params,
   return (int)ret;
 }
 
+/** Return true iff the given sendme increment is within the acceptable
+ * margins. */
+bool
+congestion_control_validate_sendme_increment(uint8_t sendme_inc)
+{
+  /* We will only accept this response (and this circuit) if sendme_inc
+   * is within a factor of 2 of our consensus value. We should not need
+   * to change cc_sendme_inc much, and if we do, we can spread out those
+   * changes over smaller increments once every 4 hours. Exits that
+   * violate this range should just not be used. */
+#define MAX_SENDME_INC_NEGOTIATE_FACTOR 2
+
+  if (sendme_inc == 0)
+return false;
+
+  if (sendme_inc >
+  MAX_SENDME_INC_NEGOTIATE_FACTOR * congestion_control_sendme_inc() ||
+  sendme_inc <
+  congestion_control_sendme_inc() / MAX_SENDME_INC_NEGOTIATE_FACTOR) {
+return false;
+  }
+  return true;
+}
+
 /** Return 1 if CC is enabled which also will set the SENDME increment into our
  * params_out. Return 0 if CC is disabled. Else, return -1 on error. */
 int
diff --git a/src/core/or/congestion_control_common.h 
b/src/core/or/congestion_control_common.h
index 21291983e0..936cb5887c 100644
--- a/src/core/or/congestion_control_common.h
+++ b/src/core/or/congestion_control_common.h
@@ -59,6 +59,7 @@ int congestion_control_build_ext_response(const 
circuit_params_t *our_params,
 int congestion_control_parse_ext_response(const uint8_t *msg,
   const size_t msg_len,
   circuit_params_t *params_out);
+bool congestion_control_validate_sendme_increment(uint8_t sendme_inc);
 
 /* Ugh, C.. these are private. Use the getter instead, when
  * external to the congestion control code. */



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


[tor-commits] [tor/main] hs: Setup congestion control on client rends

2022-02-22 Thread dgoulet
commit c79df44d2221211590ea0b33b555d559b2d467fa
Author: David Goulet 
Date:   Thu Feb 3 19:37:30 2022 +

hs: Setup congestion control on client rends

Signed-off-by: David Goulet 
---
 src/feature/hs/hs_client.c | 39 +++
 1 file changed, 39 insertions(+)

diff --git a/src/feature/hs/hs_client.c b/src/feature/hs/hs_client.c
index 206a42dc0c..69b071e197 100644
--- a/src/feature/hs/hs_client.c
+++ b/src/feature/hs/hs_client.c
@@ -11,12 +11,15 @@
 #include "core/or/or.h"
 #include "app/config/config.h"
 #include "core/crypto/hs_ntor.h"
+#include "core/crypto/onion_crypto.h"
 #include "core/mainloop/connection.h"
 #include "core/or/circuitbuild.h"
 #include "core/or/circuitlist.h"
 #include "core/or/circuituse.h"
 #include "core/or/connection_edge.h"
+#include "core/or/congestion_control_common.h"
 #include "core/or/extendinfo.h"
+#include "core/or/protover.h"
 #include "core/or/reasons.h"
 #include "feature/client/circpathbias.h"
 #include "feature/dirclient/dirclient.h"
@@ -756,6 +759,39 @@ client_intro_circ_has_opened(origin_circuit_t *circ)
   connection_ap_attach_pending(1);
 }
 
+/** Setup the congestion control parameters on the given rendezvous circuit.
+ * This looks at the service descriptor flow control line (if any). */
+static void
+setup_rendezvous_circ_congestion_control(origin_circuit_t *circ)
+{
+  circuit_params_t circ_params = {0};
+
+  tor_assert(circ);
+
+  /* Setup congestion control parameters on the circuit. */
+  const hs_descriptor_t *desc =
+hs_cache_lookup_as_client(>hs_ident->identity_pk);
+  if (BUG(desc == NULL)) {
+/* This should really never happened but in case, scream and stop. */
+return;
+  }
+
+  /* Check if the service lists support for congestion control in its
+   * descriptor. If not, we don't setup congestion control. */
+  if (!desc->encrypted_data.flow_control_pv ||
+  !protocol_list_supports_protocol(desc->encrypted_data.flow_control_pv,
+   PRT_FLOWCTRL, PROTOVER_FLOWCTRL_CC)) {
+return;
+  }
+
+  /* Take values from the consensus. */
+  circ_params.cc_enabled = congestion_control_enabled();
+  if (circ_params.cc_enabled) {
+circ_params.sendme_inc_cells = desc->encrypted_data.sendme_inc;
+TO_CIRCUIT(circ)->ccontrol = congestion_control_new(_params);
+  }
+}
+
 /** Called when a rendezvous circuit has opened. */
 static void
 client_rendezvous_circ_has_opened(origin_circuit_t *circ)
@@ -785,6 +821,9 @@ client_rendezvous_circ_has_opened(origin_circuit_t *circ)
   log_info(LD_REND, "Rendezvous circuit has opened to %s.",
safe_str_client(extend_info_describe(rp_ei)));
 
+  /* Setup congestion control parameters on the circuit. */
+  setup_rendezvous_circ_congestion_control(circ);
+
   /* Ignore returned value, nothing we can really do. On failure, the circuit
* will be marked for close. */
   hs_circ_send_establish_rendezvous(circ);



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


[tor-commits] [tor/main] trunnel: Make hs/cell_common.trunnel generic

2022-02-22 Thread dgoulet
commit b5439d6bd0eb72501abce6e5f897f473d9b27fc1
Author: David Goulet 
Date:   Tue Dec 14 09:42:02 2021 -0500

trunnel: Make hs/cell_common.trunnel generic

Move it to extension.trunnel instead so that extension ABI construction
can be used in other parts of tor than just HS cells.

Specifically, we'll use it in the ntorv3 data payload and make a
congestion control parameter extension using that binary structure.

Only rename. No code behavior changes.

Signed-off-by: David Goulet 
---
 src/feature/hs/hs_cell.c  |  47 +++---
 src/feature/hs/hs_cell.h  |   4 +-
 src/feature/hs/hs_circuit.c   |   1 -
 src/feature/hs/hs_intropoint.c|  30 ++--
 src/feature/hs/hs_service.c   |   1 -
 src/test/test_hs_cell.c   |  36 ++---
 src/test/test_hs_intropoint.c |   6 +-
 src/trunnel/{hs/cell_common.c => extension.c} | 187 
 src/trunnel/extension.h   | 197 +
 src/trunnel/extension.trunnel |  14 ++
 src/trunnel/hs/cell_common.h  | 203 --
 src/trunnel/hs/cell_common.trunnel|  12 --
 src/trunnel/hs/cell_establish_intro.c |  68 -
 src/trunnel/hs/cell_establish_intro.h |  22 +--
 src/trunnel/hs/cell_establish_intro.trunnel   |   6 +-
 src/trunnel/hs/cell_introduce1.c  |  94 ++--
 src/trunnel/hs/cell_introduce1.h  |  32 ++--
 src/trunnel/hs/cell_introduce1.trunnel|   8 +-
 src/trunnel/include.am|   5 +-
 19 files changed, 483 insertions(+), 490 deletions(-)

diff --git a/src/feature/hs/hs_cell.c b/src/feature/hs/hs_cell.c
index f84407de9e..116395b3c8 100644
--- a/src/feature/hs/hs_cell.c
+++ b/src/feature/hs/hs_cell.c
@@ -19,7 +19,7 @@
 
 /* Trunnel. */
 #include "trunnel/ed25519_cert.h"
-#include "trunnel/hs/cell_common.h"
+#include "trunnel/extension.h"
 #include "trunnel/hs/cell_establish_intro.h"
 #include "trunnel/hs/cell_introduce1.h"
 #include "trunnel/hs/cell_rendezvous.h"
@@ -379,7 +379,7 @@ introduce1_set_encrypted(trn_cell_introduce1_t *cell,
  const hs_cell_introduce1_data_t *data)
 {
   trn_cell_introduce_encrypted_t *enc_cell;
-  trn_cell_extension_t *ext;
+  trn_extension_t *ext;
 
   tor_assert(cell);
   tor_assert(data);
@@ -388,9 +388,9 @@ introduce1_set_encrypted(trn_cell_introduce1_t *cell,
   tor_assert(enc_cell);
 
   /* Set extension data. None are used. */
-  ext = trn_cell_extension_new();
+  ext = trn_extension_new();
   tor_assert(ext);
-  trn_cell_extension_set_num(ext, 0);
+  trn_extension_set_num(ext, 0);
   trn_cell_introduce_encrypted_set_extensions(enc_cell, ext);
 
   /* Set the rendezvous cookie. */
@@ -454,20 +454,20 @@ build_establish_intro_dos_param(trn_cell_extension_dos_t 
*dos_ext,
  * possible if there is a bug.) */
 static int
 build_establish_intro_dos_extension(const hs_service_config_t *service_config,
-trn_cell_extension_t *extensions)
+trn_extension_t *extensions)
 {
   ssize_t ret;
   size_t dos_ext_encoded_len;
   uint8_t *field_array;
-  trn_cell_extension_field_t *field = NULL;
+  trn_extension_field_t *field = NULL;
   trn_cell_extension_dos_t *dos_ext = NULL;
 
   tor_assert(service_config);
   tor_assert(extensions);
 
   /* We are creating a cell extension field of the type DoS. */
-  field = trn_cell_extension_field_new();
-  trn_cell_extension_field_set_field_type(field,
+  field = trn_extension_field_new();
+  trn_extension_field_set_field_type(field,
   TRUNNEL_CELL_EXTENSION_TYPE_DOS);
 
   /* Build DoS extension field. We will put in two parameters. */
@@ -490,24 +490,23 @@ build_establish_intro_dos_extension(const 
hs_service_config_t *service_config,
   }
   dos_ext_encoded_len = ret;
   /* Set length field and the field array size length. */
-  trn_cell_extension_field_set_field_len(field, dos_ext_encoded_len);
-  trn_cell_extension_field_setlen_field(field, dos_ext_encoded_len);
+  trn_extension_field_set_field_len(field, dos_ext_encoded_len);
+  trn_extension_field_setlen_field(field, dos_ext_encoded_len);
   /* Encode the DoS extension into the cell extension field. */
-  field_array = trn_cell_extension_field_getarray_field(field);
+  field_array = trn_extension_field_getarray_field(field);
   ret = trn_cell_extension_dos_encode(field_array,
- trn_cell_extension_field_getlen_field(field), dos_ext);
+ trn_extension_field_getlen_field(field), dos_ext);
   if (BUG(ret <= 0)) {
 goto err;
   }
   tor_assert(ret == (ssize_t) dos_ext_encoded_len);
 
   /* Finally, encode field into the cell extension. */
-  trn_cell_extension_add_fields(extensions, field);
+  trn_extension_add_fields(extensions, field);
 
   /* 

[tor-commits] [tor/main] cc: Use trunnel extension for ntorv3 circ parameters

2022-02-22 Thread dgoulet
commit bbf160d31199ffe75fac5b8921da904dbd45e2fb
Author: David Goulet 
Date:   Tue Dec 14 11:38:22 2021 -0500

cc: Use trunnel extension for ntorv3 circ parameters

Signed-off-by: David Goulet 
---
 src/core/crypto/onion_crypto.c  | 128 +++--
 src/core/or/circuitbuild.c  |  31 +--
 src/core/or/congestion_control_common.c | 287 
 src/core/or/congestion_control_common.h |  13 +
 src/trunnel/circ_params.c   | 452 
 src/trunnel/circ_params.h   | 147 ---
 src/trunnel/circ_params.trunnel |  25 --
 src/trunnel/congestion_control.c| 183 +
 src/trunnel/congestion_control.h|  67 +
 src/trunnel/congestion_control.trunnel  |  22 ++
 src/trunnel/include.am  |   6 +-
 11 files changed, 615 insertions(+), 746 deletions(-)

diff --git a/src/core/crypto/onion_crypto.c b/src/core/crypto/onion_crypto.c
index 4a83a73dab..81e4e1b078 100644
--- a/src/core/crypto/onion_crypto.c
+++ b/src/core/crypto/onion_crypto.c
@@ -47,7 +47,9 @@
 
 #include "core/or/crypt_path_st.h"
 #include "core/or/extend_info_st.h"
-#include "trunnel/circ_params.h"
+
+#include "trunnel/congestion_control.h"
+#include "trunnel/extension.h"
 
 static const uint8_t NTOR3_CIRC_VERIFICATION[] = "circuit extend";
 static const size_t NTOR3_CIRC_VERIFICATION_LEN = 14;
@@ -230,72 +232,29 @@ negotiate_v3_ntor_server_circ_params(const uint8_t 
*param_request_msg,
  uint8_t **resp_msg_out,
  size_t *resp_msg_len_out)
 {
-  circ_params_response_t *resp = NULL;
-  circ_params_request_t *param_request = NULL;
-  ssize_t resp_msg_len;
+  int ret;
 
-  if (circ_params_request_parse(_request, param_request_msg,
-param_request_len) < 0) {
-return -1;
+  /* Parse request. */
+  ret = congestion_control_parse_ext_request(param_request_msg,
+ param_request_len);
+  if (ret < 0) {
+goto err;
   }
+  params_out->cc_enabled = ret && our_ns_params->cc_enabled;
 
-  /* CC is enabled if the client wants it, and our consensus paramers
-   * allow it. If both are true, its on. If either is false, it's off. */
-  params_out->cc_enabled =
-  circ_params_request_get_cc_supported(param_request) &&
-  our_ns_params->cc_enabled;
-
-  resp = circ_params_response_new();
-
-  if (circ_params_response_set_version(resp, 0) < 0) {
-circ_params_request_free(param_request);
-circ_params_response_free(resp);
-return -1;
+  /* Build the response. */
+  ret = congestion_control_build_ext_response(our_ns_params, params_out,
+  resp_msg_out, resp_msg_len_out);
+  if (ret < 0) {
+goto err;
   }
-
-  /* The relay always chooses its sendme_inc, and sends it to the client */
   params_out->sendme_inc_cells = our_ns_params->sendme_inc_cells;
 
-  if (circ_params_response_set_sendme_inc_cells(resp,
-  our_ns_params->sendme_inc_cells) < 0) {
-circ_params_request_free(param_request);
-circ_params_response_free(resp);
-return -1;
-  }
-
-  /* Use the negotiated cc_enabled value to respond */
-  if (circ_params_response_set_cc_enabled(resp, params_out->cc_enabled) < 0) {
-circ_params_request_free(param_request);
-circ_params_response_free(resp);
-return -1;
-  }
+  /* Success. */
+  ret = 0;
 
-  resp_msg_len = circ_params_response_encoded_len(resp);
-
-  if (resp_msg_len < 0) {
-circ_params_request_free(param_request);
-circ_params_response_free(resp);
-return -1;
-  }
-
-  *resp_msg_out = tor_malloc_zero(resp_msg_len);
-
-  resp_msg_len = circ_params_response_encode(*resp_msg_out, resp_msg_len,
- resp);
-  if (resp_msg_len < 0) {
-circ_params_request_free(param_request);
-circ_params_response_free(resp);
-
-tor_free(*resp_msg_out);
-return -1;
-  }
-
-  *resp_msg_len_out = (size_t)resp_msg_len;
-
-  circ_params_request_free(param_request);
-  circ_params_response_free(resp);
-
-  return 0;
+ err:
+  return ret;
 }
 
 /* This is the maximum value for keys_out_len passed to
@@ -462,46 +421,29 @@ negotiate_v3_ntor_client_circ_params(const uint8_t 
*param_response_msg,
  size_t param_response_len,
  circuit_params_t *params_out)
 {
-  circ_params_response_t *param_response = NULL;
-  bool cc_enabled;
-  uint8_t sendme_inc_cells;
-
-  if (circ_params_response_parse(_response, param_response_msg,
-   param_response_len) < 0) {
+  int ret = congestion_control_parse_ext_response(param_response_msg,
+  param_response_len,
+  params_out);
+  if (ret < 0) {
 return -1;
   }
 
-  cc_enabled =
-  

[tor-commits] [tor/main] protover: Add function to get the value of a single type

2022-02-22 Thread dgoulet
commit dd938e58d3a20b11f694321d876e712dc69fee27
Author: David Goulet 
Date:   Thu Nov 4 10:20:07 2021 -0400

protover: Add function to get the value of a single type

We can now query the protover subsystem to get the current value we
support for a specific protover type.

This will be useful for prop324 onion service part which puts in the
FlowCtrl value in the service descriptor.

No behavior change.

Signed-off-by: David Goulet 
---
 src/core/or/protover.c | 68 ++
 src/core/or/protover.h |  1 +
 2 files changed, 53 insertions(+), 16 deletions(-)

diff --git a/src/core/or/protover.c b/src/core/or/protover.c
index ff986b62e2..4cd6510da7 100644
--- a/src/core/or/protover.c
+++ b/src/core/or/protover.c
@@ -385,6 +385,46 @@ protocol_list_supports_protocol_or_later(const char *list,
 /*
  * XXX START OF HAZARDOUS ZONE XXX
  */
+/* All protocol version that this relay version supports. */
+#define PR_CONS_V  "1-2"
+#define PR_DESC_V  "1-2"
+#define PR_DIRCACHE_V  "2"
+#define PR_FLOWCTRL_V  "1-2"
+#define PR_HSDIR_V "2"
+#define PR_HSINTRO_V   "4-5"
+#define PR_HSREND_V"1-2"
+#define PR_LINK_V  "1-5"
+#ifdef HAVE_WORKING_TOR_TLS_GET_TLSSECRETS
+#define PR_LINKAUTH_V  "1,3"
+#else
+#define PR_LINKAUTH_V  "3"
+#endif
+#define PR_MICRODESC_V "1-2"
+#define PR_PADDING_V   "2"
+#define PR_RELAY_V "1-4"
+
+/** Return the string containing the supported version for the given protocol
+ * type. */
+const char *
+protover_get_supported(const protocol_type_t type)
+{
+  switch (type) {
+  case PRT_CONS: return PR_CONS_V;
+  case PRT_DESC: return PR_DESC_V;
+  case PRT_DIRCACHE: return PR_DIRCACHE_V;
+  case PRT_FLOWCTRL: return PR_FLOWCTRL_V;
+  case PRT_HSDIR: return PR_HSDIR_V;
+  case PRT_HSINTRO:  return PR_HSINTRO_V;
+  case PRT_HSREND: return PR_HSREND_V;
+  case PRT_LINK: return PR_LINK_V;
+  case PRT_LINKAUTH: return PR_LINKAUTH_V;
+  case PRT_MICRODESC: return PR_MICRODESC_V;
+  case PRT_PADDING: return PR_PADDING_V;
+  case PRT_RELAY: return PR_RELAY_V;
+  default:
+tor_assert_unreached();
+  }
+}
 
 /** Return the canonical string containing the list of protocols
  * that we support.
@@ -431,22 +471,18 @@ protover_get_supported_protocols(void)
*/
 
   return
-"Cons=1-2 "
-"Desc=1-2 "
-"DirCache=2 "
-"FlowCtrl=1-2 "
-"HSDir=2 "
-"HSIntro=4-5 "
-"HSRend=1-2 "
-"Link=1-5 "
-#ifdef HAVE_WORKING_TOR_TLS_GET_TLSSECRETS
-"LinkAuth=1,3 "
-#else
-"LinkAuth=3 "
-#endif
-"Microdesc=1-2 "
-"Padding=2 "
-"Relay=1-4";
+"Cons=" PR_CONS_V " "
+"Desc=" PR_DESC_V " "
+"DirCache=" PR_DIRCACHE_V " "
+"FlowCtrl=" PR_FLOWCTRL_V " "
+"HSDir=" PR_HSDIR_V " "
+"HSIntro=" PR_HSINTRO_V " "
+"HSRend=" PR_HSREND_V " "
+"Link=" PR_LINK_V " "
+"LinkAuth=" PR_LINKAUTH_V " "
+"Microdesc=" PR_MICRODESC_V " "
+"Padding=" PR_PADDING_V " "
+"Relay=" PR_RELAY_V;
 }
 
 /*
diff --git a/src/core/or/protover.h b/src/core/or/protover.h
index 410a67a9f7..8f15c02fb2 100644
--- a/src/core/or/protover.h
+++ b/src/core/or/protover.h
@@ -75,6 +75,7 @@ typedef enum protocol_type_t {
 } protocol_type_t;
 
 bool protover_list_is_invalid(const char *s);
+const char *protover_get_supported(const protocol_type_t type);
 int protover_all_supported(const char *s, char **missing);
 int protover_is_supported_here(protocol_type_t pr, uint32_t ver);
 const char *protover_get_supported_protocols(void);



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


[tor-commits] [tor/main] Add test for congestion control negotiation logic.

2022-02-22 Thread dgoulet
commit 6b2086773c7604e6db331c13cb44cd756022ab00
Author: Mike Perry 
Date:   Tue Nov 23 20:47:24 2021 +

Add test for congestion control negotiation logic.
---
 src/core/or/congestion_control_common.c |  12 +++
 src/core/or/congestion_control_common.h |   2 +
 src/test/test_ntor_v3.c | 139 
 3 files changed, 153 insertions(+)

diff --git a/src/core/or/congestion_control_common.c 
b/src/core/or/congestion_control_common.c
index 7e38510814..bd0383e06c 100644
--- a/src/core/or/congestion_control_common.c
+++ b/src/core/or/congestion_control_common.c
@@ -78,6 +78,8 @@ static bool 
congestion_control_update_circuit_bdp(congestion_control_t *,
   const circuit_t *,
   const crypt_path_t *,
   uint64_t, uint64_t);
+/* For unit tests */
+void congestion_control_set_cc_enabled(void);
 
 /* Consensus parameters cached. The non static ones are extern. */
 static uint32_t cwnd_max = CWND_MAX_DFLT;
@@ -299,6 +301,16 @@ congestion_control_enabled(void)
   return cc_alg != CC_ALG_SENDME;
 }
 
+/**
+ * For unit tests only: set the cached consensus cc alg to
+ * specified value.
+ */
+void
+congestion_control_set_cc_enabled(void)
+{
+  cc_alg = CC_ALG_VEGAS;
+}
+
 /**
  * Allocate and initialize fields in congestion control object.
  *
diff --git a/src/core/or/congestion_control_common.h 
b/src/core/or/congestion_control_common.h
index c8f6b1c35e..4fd404a1cc 100644
--- a/src/core/or/congestion_control_common.h
+++ b/src/core/or/congestion_control_common.h
@@ -118,6 +118,8 @@ n_count_ewma(uint64_t curr, uint64_t prev, uint64_t N)
  */
 #ifdef TOR_UNIT_TESTS
 
+void congestion_control_set_cc_enabled(void);
+
 #endif /* defined(TOR_UNIT_TESTS) */
 
 #endif /* defined(TOR_CONGESTION_CONTROL_PRIVATE) */
diff --git a/src/test/test_ntor_v3.c b/src/test/test_ntor_v3.c
index 096ac6668f..1d06403076 100644
--- a/src/test/test_ntor_v3.c
+++ b/src/test/test_ntor_v3.c
@@ -10,6 +10,12 @@
 #include "lib/crypt_ops/crypto_curve25519.h"
 #include "lib/crypt_ops/crypto_ed25519.h"
 #include "core/crypto/onion_ntor_v3.h"
+#include "core/crypto/onion_crypto.h"
+#include "core/or/extend_info_st.h"
+#include "core/or/crypt_path_st.h"
+#define TOR_CONGESTION_CONTROL_PRIVATE
+#include "core/or/congestion_control_common.h"
+#include "app/config/config.h"
 
 #define unhex(arry, s)  \
   { tt_int_op(sizeof(arry), OP_EQ,  \
@@ -166,7 +172,140 @@ test_ntor3_testvecs(void *arg)
   dimap_free(private_keys, NULL);
 }
 
+static void
+run_full_handshake(circuit_params_t *serv_params_in,
+   circuit_params_t *client_params_out,
+   circuit_params_t *serv_params_out)
+{
+  extend_info_t info = {0};
+  uint8_t onionskin[CELL_PAYLOAD_SIZE];
+  int onionskin_len = 0;
+  int reply_len = 0;
+  onion_handshake_state_t handshake_state = {0};
+  server_onion_keys_t server_keys = {0};
+  curve25519_keypair_t relay_onion_key;
+  uint8_t serv_reply[CELL_PAYLOAD_SIZE];
+  uint8_t serv_keys[100];
+  uint8_t rend_nonce[DIGEST_LEN];
+  uint8_t client_keys[CELL_PAYLOAD_SIZE];
+  uint8_t rend_auth[DIGEST_LEN];
+
+  info.exit_supports_congestion_control = 1;
+
+  unhex(relay_onion_key.seckey.secret_key,
+"4051daa5921cfa2a1c27b08451324919538e79e788a81b38cbed097a5dff454a");
+  unhex(relay_onion_key.pubkey.public_key,
+"f8307a2bc1870b00b828bb74dbb8fd88e632a6375ab3bcd1ae706aaa8b6cdd1d");
+
+  memcpy(_onion_key,
+ _onion_key.pubkey, sizeof(info.curve25519_onion_key));
+  unhex(info.ed_identity.pubkey,
+"9fad2af287ef942632833d21f946c6260c33fae6172b60006e86e4a6911753a2");
+
+  memcpy(_keys.my_ed_identity, _identity,
+ sizeof(server_keys.my_ed_identity));
+
+  dimap_add_entry(_keys.curve25519_key_map,
+  relay_onion_key.pubkey.public_key,
+  _onion_key);
+
+  onionskin_len = onion_skin_create(ONION_HANDSHAKE_TYPE_NTOR_V3, ,
+_state, onionskin,
+sizeof(onionskin));
+  tt_int_op(onionskin_len, OP_NE, -1);
+
+  server_keys.junk_keypair = _state.u.ntor3->client_keypair;
+
+  reply_len = onion_skin_server_handshake(ONION_HANDSHAKE_TYPE_NTOR_V3,
+  onionskin, onionskin_len,
+  _keys, serv_params_in,
+  serv_reply, sizeof(serv_reply),
+  serv_keys, sizeof(serv_keys),
+  rend_nonce, serv_params_out);
+  tt_int_op(reply_len, OP_NE, -1);
+
+  tt_int_op(onion_skin_client_handshake(ONION_HANDSHAKE_TYPE_NTOR_V3,
+  _state,
+  serv_reply, reply_len,
+  client_keys, sizeof(client_keys),
+  rend_auth, client_params_out,
+   

[tor-commits] [tor/main] Add test for TAP vs ntor2+ntor3 onion queue ordering

2022-02-22 Thread dgoulet
commit f3283266c2e8425725d62fc4796cc0633e0c2f37
Author: Mike Perry 
Date:   Tue Nov 23 16:09:37 2021 +

Add test for TAP vs ntor2+ntor3 onion queue ordering
---
 src/test/test.c | 122 
 1 file changed, 122 insertions(+)

diff --git a/src/test/test.c b/src/test/test.c
index c38d78da30..6b7e0b6442 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -350,6 +350,127 @@ test_onion_queues(void *arg)
   tor_free(onionskin);
 }
 
+/**
+ * Test onion queue priority, separation, and resulting
+ * ordering.
+ *
+ * create and add a mix of TAP, NTOR2, and NTORv3. Ensure
+ * they all end up in the right queue. In particular, ntorv2
+ * and ntorv3 should share a queue, but TAP should be separate,
+ * and lower prioritt.
+ *
+ * We test this by way of adding TAP first, and then an interleaving
+ * order of ntor2 and ntor3, and check that the ntor2 and ntor3 are
+ * still interleaved, but TAP comes last. */
+static void
+test_onion_queue_order(void *arg)
+{
+  uint8_t buf_tap[TAP_ONIONSKIN_CHALLENGE_LEN] = {0};
+  uint8_t buf_ntor[NTOR_ONIONSKIN_LEN] = {0};
+  uint8_t buf_ntor3[CELL_PAYLOAD_SIZE] = {0};
+
+  or_circuit_t *circ_tap = or_circuit_new(0, NULL);
+  or_circuit_t *circ_ntor = or_circuit_new(0, NULL);
+  or_circuit_t *circ_ntor3 = or_circuit_new(0, NULL);
+
+  create_cell_t *onionskin = NULL;
+  create_cell_t *create_tap1 = tor_malloc_zero(sizeof(create_cell_t));
+  create_cell_t *create_ntor1 = tor_malloc_zero(sizeof(create_cell_t));
+  create_cell_t *create_ntor2 = tor_malloc_zero(sizeof(create_cell_t));
+  create_cell_t *create_v3ntor1 = tor_malloc_zero(sizeof(create_cell_t));
+  create_cell_t *create_v3ntor2 = tor_malloc_zero(sizeof(create_cell_t));
+  (void)arg;
+
+  create_cell_init(create_tap1, CELL_CREATE, ONION_HANDSHAKE_TYPE_TAP,
+   TAP_ONIONSKIN_CHALLENGE_LEN, buf_tap);
+  create_cell_init(create_ntor1, CELL_CREATE, ONION_HANDSHAKE_TYPE_NTOR,
+   NTOR_ONIONSKIN_LEN, buf_ntor);
+  create_cell_init(create_ntor2, CELL_CREATE, ONION_HANDSHAKE_TYPE_NTOR,
+   NTOR_ONIONSKIN_LEN, buf_ntor);
+  create_cell_init(create_v3ntor1, CELL_CREATE2, ONION_HANDSHAKE_TYPE_NTOR_V3,
+   NTOR_ONIONSKIN_LEN, buf_ntor3);
+  create_cell_init(create_v3ntor2, CELL_CREATE2, ONION_HANDSHAKE_TYPE_NTOR_V3,
+   NTOR_ONIONSKIN_LEN, buf_ntor3);
+
+  /* sanity check queue init */
+  tt_int_op(0,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
+  tt_int_op(0,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
+  tt_int_op(0,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR_V3));
+
+  /* Add tap first so we can ensure it comes out last */
+  tt_int_op(0,OP_EQ, onion_pending_add(circ_tap, create_tap1));
+  tt_int_op(1,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
+  tt_int_op(0,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
+  tt_int_op(0,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR_V3));
+
+  /* Now add interleaving ntor2 and ntor3, to ensure they share
+   * the same queue and come out in this order */
+  tt_int_op(0,OP_EQ, onion_pending_add(circ_ntor, create_ntor1));
+  tt_int_op(1,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
+  tt_int_op(1,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
+  tt_int_op(1,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR_V3));
+
+  tt_int_op(0,OP_EQ, onion_pending_add(circ_ntor3, create_v3ntor1));
+  tt_int_op(1,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
+  tt_int_op(2,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
+  tt_int_op(2,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR_V3));
+
+  tt_int_op(0,OP_EQ, onion_pending_add(circ_ntor, create_ntor2));
+  tt_int_op(1,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
+  tt_int_op(3,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
+  tt_int_op(3,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR_V3));
+
+  tt_int_op(0,OP_EQ, onion_pending_add(circ_ntor3, create_v3ntor2));
+  tt_int_op(1,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
+  tt_int_op(4,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
+  tt_int_op(4,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR_V3));
+
+  /* Now remove 5 tasks, ensuring order and queue sizes */
+  tt_ptr_op(circ_ntor, OP_EQ, onion_next_task());
+  tt_int_op(1,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
+  tt_int_op(3,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
+  tt_int_op(3,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR_V3));
+  tt_ptr_op(onionskin, OP_EQ, create_ntor1);
+
+  tt_ptr_op(circ_ntor3, OP_EQ, onion_next_task());
+  tt_int_op(1,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
+  tt_int_op(2,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
+  tt_int_op(2,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR_V3));
+  tt_ptr_op(onionskin, OP_EQ, create_v3ntor1);
+
+  tt_ptr_op(circ_ntor, OP_EQ, onion_next_task());
+  tt_int_op(1,OP_EQ, 

[tor-commits] [tor/main] Protover flag handling for congestion control negotiation

2022-02-22 Thread dgoulet
commit 1b1c26108050ebf8d739b6c6ce68925cf022ea3c
Author: Mike Perry 
Date:   Thu Nov 4 00:47:19 2021 +

Protover flag handling for congestion control negotiation
---
 src/core/or/or.h   |  7 +++
 src/core/or/protover.c |  6 ++
 src/core/or/protover.h |  5 +
 src/core/or/versions.c | 11 ---
 4 files changed, 14 insertions(+), 15 deletions(-)

diff --git a/src/core/or/or.h b/src/core/or/or.h
index 22846872a0..885c0e8b11 100644
--- a/src/core/or/or.h
+++ b/src/core/or/or.h
@@ -732,10 +732,9 @@ typedef struct protover_summary_flags_t {
* negotiate hs circuit setup padding. Requires Padding=2. */
   unsigned int supports_hs_setup_padding : 1;
 
-  /** True iff this router supports ntor3 _and_ supports negotiating
-   * additional circuit parameters via the handshake used in ntor3.
-   */
-  unsigned int supports_ntor3_and_param_negotiation : 1;
+  /** True iff this router supports congestion control.
+   * Requires both FlowCtrl=2 *and* Relay=4 */
+  unsigned int supports_congestion_control : 1;
 } protover_summary_flags_t;
 
 typedef struct routerinfo_t routerinfo_t;
diff --git a/src/core/or/protover.c b/src/core/or/protover.c
index 8405a720fb..ff986b62e2 100644
--- a/src/core/or/protover.c
+++ b/src/core/or/protover.c
@@ -430,13 +430,11 @@ protover_get_supported_protocols(void)
* XXX: WARNING!
*/
 
-  /* TODO-324: Add a new Relay=* and a new FlowCtrl=* version to indicate
-   * support for Ntorv3 and prop324.  Make sure they get into the spec. */
   return
 "Cons=1-2 "
 "Desc=1-2 "
 "DirCache=2 "
-"FlowCtrl=1 "
+"FlowCtrl=1-2 "
 "HSDir=2 "
 "HSIntro=4-5 "
 "HSRend=1-2 "
@@ -448,7 +446,7 @@ protover_get_supported_protocols(void)
 #endif
 "Microdesc=1-2 "
 "Padding=2 "
-"Relay=1-3";
+"Relay=1-4";
 }
 
 /*
diff --git a/src/core/or/protover.h b/src/core/or/protover.h
index ae258d74a5..410a67a9f7 100644
--- a/src/core/or/protover.h
+++ b/src/core/or/protover.h
@@ -35,6 +35,8 @@ struct smartlist_t;
 /** The protover version number where relays can consider IPv6 connections
  *  canonical */
 #define PROTOVER_RELAY_CANONICAL_IPV6 3
+/** The protover version number where relays can accept ntorv3 */
+#define PROTOVER_RELAY_NTOR_V3 4
 
 /** The protover version number that signifies HSv3 intro point support */
 #define PROTOVER_HS_INTRO_V3 4
@@ -51,6 +53,9 @@ struct smartlist_t;
 /** The protover that signals support for HS circuit setup padding machines */
 #define PROTOVER_HS_SETUP_PADDING 2
 
+/** The protover that signals support for congestion control */
+#define PROTOVER_FLOWCTRL_CC 2
+
 /** List of recognized subprotocols. */
 /// C_RUST_COUPLED: src/rust/protover/ffi.rs `translate_to_rust`
 /// C_RUST_COUPLED: src/rust/protover/protover.rs `Proto`
diff --git a/src/core/or/versions.c b/src/core/or/versions.c
index 052351120e..9913b3ee31 100644
--- a/src/core/or/versions.c
+++ b/src/core/or/versions.c
@@ -482,14 +482,11 @@ memoize_protover_summary(protover_summary_flags_t *out,
 protocol_list_supports_protocol(protocols, PRT_PADDING,
 PROTOVER_HS_SETUP_PADDING);
 
-  /* TODO-324: Set these flags based on real values.
-  out->supports_ntor3_and_param_negotiation =
-protocol_list_supports_protocol(protocols, PRT_RELAY,
-)
-&&
+  out->supports_congestion_control =
 protocol_list_supports_protocol(protocols, PRT_FLOWCTRL,
-);
-  */
+PROTOVER_FLOWCTRL_CC) &&
+protocol_list_supports_protocol(protocols, PRT_RELAY,
+PROTOVER_RELAY_NTOR_V3);
 
   protover_summary_flags_t *new_cached = tor_memdup(out, sizeof(*out));
   cached = strmap_set(protover_summary_map, protocols, new_cached);



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


[tor-commits] [tor/main] Add hidden torrc option to always try CC negotiation.

2022-02-22 Thread dgoulet
commit b2789ae72aab35443c2988d930495b8efa870f3e
Author: Mike Perry 
Date:   Tue Nov 16 22:01:54 2021 +

Add hidden torrc option to always try CC negotiation.

This is for public network testing and for sbws. Should not otherwise be 
used,
hence it is an undocumented __option.

The option deliberately does not allow force-disabling congestion control, 
as
this is bad for queueing and fairness.
---
 src/app/config/config.c |  1 +
 src/app/config/or_options_st.h  |  3 +++
 src/core/or/congestion_control_common.c | 46 +++--
 3 files changed, 42 insertions(+), 8 deletions(-)

diff --git a/src/app/config/config.c b/src/app/config/config.c
index 8df5275cc6..05bd96fc6a 100644
--- a/src/app/config/config.c
+++ b/src/app/config/config.c
@@ -675,6 +675,7 @@ static const config_var_t option_vars_[] = {
   V(VanguardsLiteEnabled,AUTOBOOL, "auto"),
   V(UseMicrodescriptors, AUTOBOOL, "auto"),
   OBSOLETE("UseNTorHandshake"),
+  VAR("__AlwaysCongestionControl",  BOOL, AlwaysCongestionControl, "0"),
   V_IMMUTABLE(User,  STRING,   NULL),
   OBSOLETE("UserspaceIOCPBuffers"),
   OBSOLETE("V1AuthoritativeDirectory"),
diff --git a/src/app/config/or_options_st.h b/src/app/config/or_options_st.h
index 3a1acad044..a1ef7a8cf8 100644
--- a/src/app/config/or_options_st.h
+++ b/src/app/config/or_options_st.h
@@ -601,6 +601,9 @@ struct or_options_t {
   /** Boolean: Switch to toggle the vanguards-lite subsystem */
   int VanguardsLiteEnabled;
 
+  /** Boolean: Switch to override consensus to enable congestion control */
+  int AlwaysCongestionControl;
+
   int RephistTrackTime; /**< How many seconds do we keep rephist info? */
   /** Should we always fetch our dir info on the mirror schedule (which
* means directly from the authorities) no matter our other config? */
diff --git a/src/core/or/congestion_control_common.c 
b/src/core/or/congestion_control_common.c
index d4b933a032..7e38510814 100644
--- a/src/core/or/congestion_control_common.c
+++ b/src/core/or/congestion_control_common.c
@@ -26,6 +26,7 @@
 #include "core/or/trace_probes_cc.h"
 #include "lib/time/compat_time.h"
 #include "feature/nodelist/networkstatus.h"
+#include "app/config/config.h"
 
 /* Consensus parameter defaults.
  *
@@ -34,6 +35,7 @@
 #define CIRCWINDOW_INIT (500)
 #define SENDME_INC_DFLT (50)
 #define CC_ALG_DFLT (CC_ALG_SENDME)
+#define CC_ALG_DFLT_ALWAYS (CC_ALG_VEGAS)
 
 #define CWND_INC_DFLT (50)
 #define CWND_INC_PCT_SS_DFLT (100)
@@ -161,6 +163,7 @@ static void
 congestion_control_init_params(congestion_control_t *cc,
const circuit_params_t *params)
 {
+  const or_options_t *opts = get_options();
   cc->sendme_inc = params->sendme_inc_cells;
 
 #define CWND_INIT_MIN 100
@@ -219,13 +222,14 @@ congestion_control_init_params(congestion_control_t *cc,
 BWE_SENDME_MIN_MIN,
 BWE_SENDME_MIN_MAX);
 
-#define CC_ALG_MIN 0
-#define CC_ALG_MAX (NUM_CC_ALGS-1)
-  cc->cc_alg =
-networkstatus_get_param(NULL, "cc_alg",
-cc_alg,
-CC_ALG_MIN,
-CC_ALG_MAX);
+  /* If the consensus says to use OG sendme, but torrc has
+   * always-enabled, use the default "always" alg (vegas),
+   * else use cached conensus alg. */
+  if (cc_alg == CC_ALG_SENDME && opts->AlwaysCongestionControl) {
+cc->cc_alg = CC_ALG_DFLT_ALWAYS;
+  } else {
+cc->cc_alg = cc_alg;
+  }
 
   bdp_alg_t default_bdp_alg = 0;
 
@@ -262,10 +266,36 @@ congestion_control_init_params(congestion_control_t *cc,
 }
 
 /** Returns true if congestion control is enabled in the most recent
- * consensus */
+ * consensus, or if __AlwaysCongestionControl is set to true.
+ *
+ * Note that this function (and many many other functions) should not
+ * be called from the CPU worker threads when handling congestion
+ * control negotiation. Relevant values are marshaled into the
+ * `circuit_params_t` struct, in order to be used in worker threads
+ * without touching global state. Use those values in CPU worker
+ * threads, instead of calling this function.
+ *
+ * The danger is still present, in your time, as it was in ours.
+ */
 bool
 congestion_control_enabled(void)
 {
+  const or_options_t *opts = NULL;
+
+  tor_assert_nonfatal_once(in_main_thread());
+
+  opts = get_options();
+
+  /* If the user has set "__AlwaysCongesttionControl",
+   * then always try to negotiate congestion control, regardless
+   * of consensus param. This is to be used for testing and sbws.
+   *
+   * Note that we do *not* allow disabling congestion control
+   * if the consensus says to use it, as this is bad for queueing
+   * and fairness. */
+  if (opts->AlwaysCongestionControl)
+return 1;
+
   return cc_alg != CC_ALG_SENDME;
 }
 



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


[tor-commits] [tor/main] Congestion control usage of negotiated params

2022-02-22 Thread dgoulet
commit a07e008616e3bc00451cb28017750e4dc0bc9ca2
Author: Mike Perry 
Date:   Thu Nov 4 00:47:42 2021 +

Congestion control usage of negotiated params
---
 src/core/or/congestion_control_common.c | 56 -
 src/core/or/congestion_control_common.h | 17 ++
 src/core/or/congestion_control_flow.c   | 10 --
 3 files changed, 46 insertions(+), 37 deletions(-)

diff --git a/src/core/or/congestion_control_common.c 
b/src/core/or/congestion_control_common.c
index b76c0957e4..d4b933a032 100644
--- a/src/core/or/congestion_control_common.c
+++ b/src/core/or/congestion_control_common.c
@@ -33,6 +33,7 @@
  * section 6.5 including tuning notes. */
 #define CIRCWINDOW_INIT (500)
 #define SENDME_INC_DFLT (50)
+#define CC_ALG_DFLT (CC_ALG_SENDME)
 
 #define CWND_INC_DFLT (50)
 #define CWND_INC_PCT_SS_DFLT (100)
@@ -82,6 +83,8 @@ int32_t cell_queue_high = CELL_QUEUE_HIGH_DFLT;
 int32_t cell_queue_low = CELL_QUEUE_LOW_DFLT;
 uint32_t or_conn_highwater = OR_CONN_HIGHWATER_DFLT;
 uint32_t or_conn_lowwater = OR_CONN_LOWWATER_DFLT;
+uint8_t cc_sendme_inc = SENDME_INC_DFLT;
+static cc_alg_t cc_alg = CC_ALG_DFLT;
 
 /**
  * Update global congestion control related consensus parameter values,
@@ -127,6 +130,22 @@ congestion_control_new_consensus_params(const 
networkstatus_t *ns)
 CWND_MAX_DFLT,
 CWND_MAX_MIN,
 CWND_MAX_MAX);
+
+#define SENDME_INC_MIN 10
+#define SENDME_INC_MAX (1000)
+  cc_sendme_inc =
+networkstatus_get_param(NULL, "cc_sendme_inc",
+SENDME_INC_DFLT,
+SENDME_INC_MIN,
+SENDME_INC_MAX);
+
+#define CC_ALG_MIN 0
+#define CC_ALG_MAX (NUM_CC_ALGS-1)
+  cc_alg =
+networkstatus_get_param(NULL, "cc_alg",
+CC_ALG_DFLT,
+CC_ALG_MIN,
+CC_ALG_MAX);
 }
 
 /**
@@ -140,9 +159,10 @@ congestion_control_new_consensus_params(const 
networkstatus_t *ns)
  */
 static void
 congestion_control_init_params(congestion_control_t *cc,
-   cc_alg_t cc_alg,
-   int sendme_inc)
+   const circuit_params_t *params)
 {
+  cc->sendme_inc = params->sendme_inc_cells;
+
 #define CWND_INIT_MIN 100
 #define CWND_INIT_MAX (1)
   cc->cwnd =
@@ -175,16 +195,7 @@ congestion_control_init_params(congestion_control_t *cc,
 CWND_INC_RATE_MIN,
 CWND_INC_RATE_MAX);
 
-#define SENDME_INC_MIN 10
-#define SENDME_INC_MAX (1000)
-  cc->sendme_inc =
-networkstatus_get_param(NULL, "cc_sendme_inc",
-sendme_inc,
-SENDME_INC_MIN,
-SENDME_INC_MAX);
-
-  // XXX: this min needs to abide by sendme_inc range rules somehow
-#define CWND_MIN_MIN sendme_inc
+#define CWND_MIN_MIN 20
 #define CWND_MIN_MAX (1000)
   cc->cwnd_min =
 networkstatus_get_param(NULL, "cc_cwnd_min",
@@ -250,6 +261,14 @@ congestion_control_init_params(congestion_control_t *cc,
   }
 }
 
+/** Returns true if congestion control is enabled in the most recent
+ * consensus */
+bool
+congestion_control_enabled(void)
+{
+  return cc_alg != CC_ALG_SENDME;
+}
+
 /**
  * Allocate and initialize fields in congestion control object.
  *
@@ -259,14 +278,14 @@ congestion_control_init_params(congestion_control_t *cc,
  * acks. This parameter will come from circuit negotiation.
  */
 static void
-congestion_control_init(congestion_control_t *cc, cc_alg_t cc_alg,
-int sendme_inc)
+congestion_control_init(congestion_control_t *cc,
+const circuit_params_t *params)
 {
   cc->sendme_pending_timestamps = smartlist_new();
   cc->sendme_arrival_timestamps = smartlist_new();
 
   cc->in_slow_start = 1;
-  congestion_control_init_params(cc, cc_alg, sendme_inc);
+  congestion_control_init_params(cc, params);
 
   cc->next_cc_event = CWND_UPDATE_RATE(cc);
 }
@@ -277,12 +296,7 @@ congestion_control_new(const circuit_params_t *params)
 {
   congestion_control_t *cc = tor_malloc_zero(sizeof(congestion_control_t));
 
-  /* TODO-324: Use `params` to pick the algorithm and the window. */
-  (void) params;
-
-  // TODO-324: XXX: the alg and the sendme_inc need to be negotiated during
-  // circuit handshake
-  congestion_control_init(cc, CC_ALG_VEGAS, SENDME_INC_DFLT);
+  congestion_control_init(cc, params);
 
   return cc;
 }
diff --git a/src/core/or/congestion_control_common.h 
b/src/core/or/congestion_control_common.h
index 81ec79c6e6..c8f6b1c35e 100644
--- a/src/core/or/congestion_control_common.h
+++ b/src/core/or/congestion_control_common.h
@@ -20,11 +20,6 @@ typedef struct congestion_control_t congestion_control_t;
 
 void congestion_control_free_(congestion_control_t *cc);
 
-/* TODO-324: Whisky Tango Foxtot‽  Nothing calls this function anywhere!
- *
- * It needs to be called client-side and relay-side every time we initialize a
- * circuit!
- */
 struct circuit_params_t;
 congestion_control_t *congestion_control_new(
 const struct circuit_params_t *params);
@@ -50,12 +45,15 @@ bool 

[tor-commits] [tor/main] Extend info argument updates for non-ntorv3 cases

2022-02-22 Thread dgoulet
commit 812590f8aa6637cd2b3f869dc4e30fd6550beac3
Author: Mike Perry 
Date:   Thu Nov 4 19:57:57 2021 +

Extend info argument updates for non-ntorv3 cases
---
 src/feature/hs/hs_common.c | 2 +-
 src/feature/hs/hs_service.c| 2 +-
 src/feature/relay/circuitbuild_relay.c | 3 ++-
 src/feature/relay/relay_find_addr.c| 2 +-
 src/feature/relay/selftest.c   | 4 +++-
 src/test/test_circuitpadding.c | 2 +-
 src/test/test_hs_client.c  | 8 
 7 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/src/feature/hs/hs_common.c b/src/feature/hs/hs_common.c
index 38c8bf2912..3036ce2710 100644
--- a/src/feature/hs/hs_common.c
+++ b/src/feature/hs/hs_common.c
@@ -1698,7 +1698,7 @@ hs_get_extend_info_from_lspecs(const smartlist_t *lspecs,
 function that needs to initialize congestion
 control structures based on what the client says.
  */
- NULL);
+ NULL, false);
  done:
   return info;
 }
diff --git a/src/feature/hs/hs_service.c b/src/feature/hs/hs_service.c
index 9b7b590140..2b3699422a 100644
--- a/src/feature/hs/hs_service.c
+++ b/src/feature/hs/hs_service.c
@@ -714,7 +714,7 @@ get_extend_info_from_intro_point(const 
hs_service_intro_point_t *ip,
 
   /* In the case of a direct connection (single onion service), it is possible
* our firewall policy won't allow it so this can return a NULL value. */
-  info = extend_info_from_node(node, direct_conn);
+  info = extend_info_from_node(node, direct_conn, false);
 
  end:
   return info;
diff --git a/src/feature/relay/circuitbuild_relay.c 
b/src/feature/relay/circuitbuild_relay.c
index af3b488ae1..5b1609a1af 100644
--- a/src/feature/relay/circuitbuild_relay.c
+++ b/src/feature/relay/circuitbuild_relay.c
@@ -393,7 +393,8 @@ circuit_open_connection_for_extend(const struct 
extend_cell_t *ec,
 NULL, /*curve25519_key*/
 _ap->addr,
 chosen_ap->port,
-NULL /* protover summary */);
+NULL /* protover summary */,
+false);
 
   circ->n_chan_create_cell = tor_memdup(>create_cell,
 sizeof(ec->create_cell));
diff --git a/src/feature/relay/relay_find_addr.c 
b/src/feature/relay/relay_find_addr.c
index 33a50ce3c3..f4f9d40823 100644
--- a/src/feature/relay/relay_find_addr.c
+++ b/src/feature/relay/relay_find_addr.c
@@ -221,7 +221,7 @@ relay_addr_learn_from_dirauth(void)
"learn for now our address from them.");
   return;
 }
-extend_info_t *ei = extend_info_from_node(node, 1);
+extend_info_t *ei = extend_info_from_node(node, 1, false);
 if (BUG(!ei)) {
   return;
 }
diff --git a/src/feature/relay/selftest.c b/src/feature/relay/selftest.c
index d52fea3c11..399b6bca6e 100644
--- a/src/feature/relay/selftest.c
+++ b/src/feature/relay/selftest.c
@@ -229,7 +229,9 @@ extend_info_from_router(const routerinfo_t *r, int family)
  ed_id_key,
  rsa_pubkey, r->onion_curve25519_pkey,
  , ap.port,
- NULL /* should self-tests use ntor3? */);
+ /* TODO-324: Should self-test circuits use
+  * congestion control? */
+ NULL, false);
   crypto_pk_free(rsa_pubkey);
   return info;
 }
diff --git a/src/test/test_circuitpadding.c b/src/test/test_circuitpadding.c
index 5dc5fc5201..63b7136a11 100644
--- a/src/test/test_circuitpadding.c
+++ b/src/test/test_circuitpadding.c
@@ -1609,7 +1609,7 @@ simulate_single_hop_extend(circuit_t *client, circuit_t 
*mid_relay,
   hop->extend_info = extend_info_new(
   padding ? "padding" : "non-padding",
   digest, NULL, NULL, NULL,
-  , padding, NULL);
+  , padding, NULL, false);
 
   cpath_init_circuit_crypto(hop, whatevs_key, sizeof(whatevs_key), 0, 0);
 
diff --git a/src/test/test_hs_client.c b/src/test/test_hs_client.c
index 3d84238249..0fe71ed7bd 100644
--- a/src/test/test_hs_client.c
+++ b/src/test/test_hs_client.c
@@ -1186,7 +1186,7 @@ test_socks_hs_errors(void *arg)
   /* Code path will log this exit so build it. */
   ocirc->build_state->chosen_exit = extend_info_new("TestNickname", digest,
 NULL, NULL, NULL, ,
-4242, NULL);
+4242, NULL, false);
   /* Attach socks connection to this rendezvous circuit. */
   ocirc->p_streams = ENTRY_TO_EDGE_CONN(socks_conn);
   /* Trigger the rendezvous failure. Timeout the circuit and free. */
@@ -1281,7 +1281,7 @@ test_close_intro_circuit_failure(void *arg)
   /* Code path will log this exit so build 

[tor-commits] [tor/main] Handle other places that use onion handshake type values

2022-02-22 Thread dgoulet
commit a0eeadfba2c1d7d33214286ef7697971120cbe16
Author: Mike Perry 
Date:   Fri Nov 5 20:50:39 2021 +

Handle other places that use onion handshake type values

We want ntor and ntorv3 to use the same queues and stats.
---
 src/core/crypto/onion_crypto.c  |  1 -
 src/core/or/onion.c | 14 +
 src/core/or/or.h|  2 +-
 src/feature/relay/onion_queue.c | 64 -
 src/feature/stats/rephist.c | 59 ++---
 src/feature/stats/rephist.h |  8 --
 6 files changed, 95 insertions(+), 53 deletions(-)

diff --git a/src/core/crypto/onion_crypto.c b/src/core/crypto/onion_crypto.c
index 13f8f54b35..4a83a73dab 100644
--- a/src/core/crypto/onion_crypto.c
+++ b/src/core/crypto/onion_crypto.c
@@ -49,7 +49,6 @@
 #include "core/or/extend_info_st.h"
 #include "trunnel/circ_params.h"
 
-/* TODO-324: Add this to the specification! */
 static const uint8_t NTOR3_CIRC_VERIFICATION[] = "circuit extend";
 static const size_t NTOR3_CIRC_VERIFICATION_LEN = 14;
 
diff --git a/src/core/or/onion.c b/src/core/or/onion.c
index 62ad7af3fe..0bdd2a6d35 100644
--- a/src/core/or/onion.c
+++ b/src/core/or/onion.c
@@ -88,6 +88,10 @@ check_create_cell(const create_cell_t *cell, int unknown_ok)
 if (cell->handshake_len != NTOR_ONIONSKIN_LEN)
   return -1;
 break;
+  case ONION_HANDSHAKE_TYPE_NTOR_V3:
+/* ntor v3 has variable length fields that are checked
+ * elsewhere. Fall through to always valid here. */
+break;
   default:
 if (! unknown_ok)
   return -1;
@@ -521,6 +525,11 @@ create_cell_format_impl(cell_t *cell_out, const 
create_cell_t *cell_in,
 
   switch (cell_in->cell_type) {
   case CELL_CREATE:
+if (BUG(cell_in->handshake_type == ONION_HANDSHAKE_TYPE_NTOR_V3)) {
+  log_warn(LD_BUG, "Create cells cannot contain ntorv3.");
+  return -1;
+}
+
 if (cell_in->handshake_type == ONION_HANDSHAKE_TYPE_NTOR) {
   memcpy(p, NTOR_CREATE_MAGIC, 16);
   p += 16;
@@ -619,6 +628,11 @@ extend_cell_format(uint8_t *command_out, uint16_t *len_out,
   switch (cell_in->cell_type) {
   case RELAY_COMMAND_EXTEND:
 {
+  if (BUG(cell_in->create_cell.handshake_type ==
+  ONION_HANDSHAKE_TYPE_NTOR_V3)) {
+log_warn(LD_BUG, "Extend cells cannot contain ntorv3!");
+return -1;
+  }
   *command_out = RELAY_COMMAND_EXTEND;
   *len_out = 6 + TAP_ONIONSKIN_CHALLENGE_LEN + DIGEST_LEN;
   set_uint32(p, tor_addr_to_ipv4n(_in->orport_ipv4.addr));
diff --git a/src/core/or/or.h b/src/core/or/or.h
index 885c0e8b11..dc8f516f0a 100644
--- a/src/core/or/or.h
+++ b/src/core/or/or.h
@@ -793,7 +793,7 @@ typedef enum {
 #define ONION_HANDSHAKE_TYPE_TAP  0x
 #define ONION_HANDSHAKE_TYPE_FAST 0x0001
 #define ONION_HANDSHAKE_TYPE_NTOR 0x0002
-#define ONION_HANDSHAKE_TYPE_NTOR_V3 0x0003 /* TODO-324: Add to spec */
+#define ONION_HANDSHAKE_TYPE_NTOR_V3 0x0003
 #define MAX_ONION_HANDSHAKE_TYPE 0x0003
 
 typedef struct onion_handshake_state_t onion_handshake_state_t;
diff --git a/src/feature/relay/onion_queue.c b/src/feature/relay/onion_queue.c
index c09f4d5b9b..b0bb71a084 100644
--- a/src/feature/relay/onion_queue.c
+++ b/src/feature/relay/onion_queue.c
@@ -42,7 +42,7 @@
 typedef struct onion_queue_t {
   TOR_TAILQ_ENTRY(onion_queue_t) next;
   or_circuit_t *circ;
-  uint16_t handshake_type;
+  uint16_t queue_idx;
   create_cell_t *onionskin;
   time_t when_added;
 } onion_queue_t;
@@ -53,20 +53,41 @@ typedef struct onion_queue_t {
 TOR_TAILQ_HEAD(onion_queue_head_t, onion_queue_t);
 typedef struct onion_queue_head_t onion_queue_head_t;
 
+/** We have 3 queues: tap, fast, and ntor. (ntorv3 goes into ntor queue). */
+#define MAX_QUEUE_IDX ONION_HANDSHAKE_TYPE_NTOR
+
 /** Array of queues of circuits waiting for CPU workers. An element is NULL
  * if that queue is empty.*/
-static onion_queue_head_t ol_list[MAX_ONION_HANDSHAKE_TYPE+1] =
+static onion_queue_head_t ol_list[MAX_QUEUE_IDX+1] =
 { TOR_TAILQ_HEAD_INITIALIZER(ol_list[0]), /* tap */
   TOR_TAILQ_HEAD_INITIALIZER(ol_list[1]), /* fast */
   TOR_TAILQ_HEAD_INITIALIZER(ol_list[2]), /* ntor */
 };
 
 /** Number of entries of each type currently in each element of ol_list[]. */
-static int ol_entries[MAX_ONION_HANDSHAKE_TYPE+1];
+static int ol_entries[MAX_QUEUE_IDX+1];
 
 static int num_ntors_per_tap(void);
 static void onion_queue_entry_remove(onion_queue_t *victim);
 
+/**
+ * We combine ntorv3 and ntor into the same queue, so we must
+ * use this function to covert the cell type to a queue index.
+ */
+static inline uint16_t
+onionskin_type_to_queue(uint16_t type)
+{
+  if (type == ONION_HANDSHAKE_TYPE_NTOR_V3) {
+return ONION_HANDSHAKE_TYPE_NTOR;
+  }
+
+  if (BUG(type > MAX_QUEUE_IDX)) {
+return MAX_QUEUE_IDX; // use ntor if out of range
+  }
+
+  return type;
+}
+
 /*  Check lengths vs MAX_ONIONSKIN_{CHALLENGE,REPLY}_LEN.
  *
  * (By which I think I meant, "make sure that no
@@ 

[tor-commits] [tor/main] Implement congestion control parameter negotiation

2022-02-22 Thread dgoulet
commit b6d5fbba7d7e0e2cfa0c0cbb7f91e6039e3decf9
Author: Mike Perry 
Date:   Thu Nov 4 00:44:38 2021 +

Implement congestion control parameter negotiation
---
 src/core/crypto/onion_crypto.c | 200 +++--
 src/core/crypto/onion_crypto.h |  10 ++-
 src/core/mainloop/cpuworker.c  |  22 -
 3 files changed, 198 insertions(+), 34 deletions(-)

diff --git a/src/core/crypto/onion_crypto.c b/src/core/crypto/onion_crypto.c
index 1e9913539f..13f8f54b35 100644
--- a/src/core/crypto/onion_crypto.c
+++ b/src/core/crypto/onion_crypto.c
@@ -41,15 +41,17 @@
 #include "lib/crypt_ops/crypto_dh.h"
 #include "lib/crypt_ops/crypto_util.h"
 #include "feature/relay/routerkeys.h"
+#include "core/or/congestion_control_common.h"
 
 #include "core/or/circuitbuild.h"
 
 #include "core/or/crypt_path_st.h"
 #include "core/or/extend_info_st.h"
+#include "trunnel/circ_params.h"
 
 /* TODO-324: Add this to the specification! */
-const uint8_t NTOR3_CIRC_VERIFICATION[] = "circuit extend";
-const size_t NTOR3_CIRC_VERIFICATION_LEN = 14;
+static const uint8_t NTOR3_CIRC_VERIFICATION[] = "circuit extend";
+static const size_t NTOR3_CIRC_VERIFICATION_LEN = 14;
 
 #define NTOR3_VERIFICATION_ARGS \
   NTOR3_CIRC_VERIFICATION, NTOR3_CIRC_VERIFICATION_LEN
@@ -210,6 +212,93 @@ onion_skin_create(int type,
   return r;
 }
 
+/**
+ * Takes a param request message from the client, compares it to our
+ * consensus parameters, and creates a reply message and output
+ * parameters.
+ *
+ * This function runs in a worker thread, so it can only inspect
+ * arguments and local variables.
+ *
+ * Returns 0 if successful.
+ * Returns -1 on parsing, parameter failure, or reply creation failure.
+ */
+static int
+negotiate_v3_ntor_server_circ_params(const uint8_t *param_request_msg,
+ size_t param_request_len,
+ const circuit_params_t *our_ns_params,
+ circuit_params_t *params_out,
+ uint8_t **resp_msg_out,
+ size_t *resp_msg_len_out)
+{
+  circ_params_response_t *resp = NULL;
+  circ_params_request_t *param_request = NULL;
+  ssize_t resp_msg_len;
+
+  if (circ_params_request_parse(_request, param_request_msg,
+param_request_len) < 0) {
+return -1;
+  }
+
+  /* CC is enabled if the client wants it, and our consensus paramers
+   * allow it. If both are true, its on. If either is false, it's off. */
+  params_out->cc_enabled =
+  circ_params_request_get_cc_supported(param_request) &&
+  our_ns_params->cc_enabled;
+
+  resp = circ_params_response_new();
+
+  if (circ_params_response_set_version(resp, 0) < 0) {
+circ_params_request_free(param_request);
+circ_params_response_free(resp);
+return -1;
+  }
+
+  /* The relay always chooses its sendme_inc, and sends it to the client */
+  params_out->sendme_inc_cells = our_ns_params->sendme_inc_cells;
+
+  if (circ_params_response_set_sendme_inc_cells(resp,
+  our_ns_params->sendme_inc_cells) < 0) {
+circ_params_request_free(param_request);
+circ_params_response_free(resp);
+return -1;
+  }
+
+  /* Use the negotiated cc_enabled value to respond */
+  if (circ_params_response_set_cc_enabled(resp, params_out->cc_enabled) < 0) {
+circ_params_request_free(param_request);
+circ_params_response_free(resp);
+return -1;
+  }
+
+  resp_msg_len = circ_params_response_encoded_len(resp);
+
+  if (resp_msg_len < 0) {
+circ_params_request_free(param_request);
+circ_params_response_free(resp);
+return -1;
+  }
+
+  *resp_msg_out = tor_malloc_zero(resp_msg_len);
+
+  resp_msg_len = circ_params_response_encode(*resp_msg_out, resp_msg_len,
+ resp);
+  if (resp_msg_len < 0) {
+circ_params_request_free(param_request);
+circ_params_response_free(resp);
+
+tor_free(*resp_msg_out);
+return -1;
+  }
+
+  *resp_msg_len_out = (size_t)resp_msg_len;
+
+  circ_params_request_free(param_request);
+  circ_params_response_free(resp);
+
+  return 0;
+}
+
 /* This is the maximum value for keys_out_len passed to
  * onion_skin_server_handshake, plus 16. We can make it bigger if needed:
  * It just defines how many bytes to stack-allocate. */
@@ -226,6 +315,7 @@ int
 onion_skin_server_handshake(int type,
   const uint8_t *onion_skin, size_t onionskin_len,
   const server_onion_keys_t *keys,
+  const circuit_params_t *our_ns_params,
   uint8_t *reply_out,
   size_t reply_out_maxlen,
   uint8_t *keys_out, size_t keys_out_len,
@@ -233,7 +323,7 @@ onion_skin_server_handshake(int type,
   circuit_params_t *params_out)
 {
   int r = -1;
-  memset(params_out, 0, sizeof(*params_out)); // TODO-324: actually set this!
+  memset(params_out, 0, 

[tor-commits] [tor/main] Convert TODO into TODO-324 for better visibility.

2022-02-22 Thread dgoulet
commit 93318ba5e21851f486e148ff216d239c4ca25ce7
Author: Nick Mathewson 
Date:   Tue Sep 14 17:23:31 2021 -0400

Convert TODO into TODO-324 for better visibility.
---
 src/core/crypto/onion_crypto.c  | 21 ++---
 src/core/mainloop/cpuworker.c   |  2 +-
 src/core/or/circuitbuild.c  |  4 ++--
 src/core/or/command.c   |  4 ++--
 src/core/or/congestion_control_common.c |  4 ++--
 src/core/or/congestion_control_common.h |  6 +-
 src/core/or/or.h|  2 +-
 src/core/or/protover.c  |  4 ++--
 src/core/or/versions.c  |  2 +-
 src/feature/hs/hs_common.c  | 11 +--
 10 files changed, 35 insertions(+), 25 deletions(-)

diff --git a/src/core/crypto/onion_crypto.c b/src/core/crypto/onion_crypto.c
index 390151b5df..1e9913539f 100644
--- a/src/core/crypto/onion_crypto.c
+++ b/src/core/crypto/onion_crypto.c
@@ -47,7 +47,7 @@
 #include "core/or/crypt_path_st.h"
 #include "core/or/extend_info_st.h"
 
-/* TODO: Add this to the specification! */
+/* TODO-324: Add this to the specification! */
 const uint8_t NTOR3_CIRC_VERIFICATION[] = "circuit extend";
 const size_t NTOR3_CIRC_VERIFICATION_LEN = 14;
 
@@ -233,7 +233,7 @@ onion_skin_server_handshake(int type,
   circuit_params_t *params_out)
 {
   int r = -1;
-  memset(params_out, 0, sizeof(*params_out)); // TODO: actually set.
+  memset(params_out, 0, sizeof(*params_out)); // TODO-324: actually set this!
 
   switch (type) {
   case ONION_HANDSHAKE_TYPE_TAP:
@@ -306,10 +306,10 @@ onion_skin_server_handshake(int type,
 uint8_t reply_msg[1] = { 0 };
 size_t reply_msg_len = 1;
 {
-  /* TODO, Okay, we have a message from the client trying to negotiate
-   * parameters.  We need to decide whether the client's request is
-   * okay, what we're going to say in response, and what circuit
-   * parameters we've just negotiated
+  /* TODO-324, Okay, we have a message from the client trying to negotiate
+   * parameters.  We need to decide whether the client's request is okay,
+   * what we're going to say in response, and what circuit parameters
+   * we've just negotiated
*/
 
   /* NOTE! DANGER, DANGER, DANGER!
@@ -331,12 +331,12 @@ onion_skin_server_handshake(int type,
reply_msg, reply_msg_len,
_handshake, _handshake_len,
keys_tmp, keys_tmp_len) < 0) {
-  // XXX TODO free some stuff
+  // XXX TODO-324 free some stuff
   return -1;
 }
 
 if (server_handshake_len > reply_out_maxlen) {
-  // XXX TODO free that stuff
+  // XXX TODO-324 free that stuff
   return -1;
 }
 
@@ -382,7 +382,7 @@ onion_skin_client_handshake(int type,
   if (handshake_state->tag != type)
 return -1;
 
-  memset(params_out, 0, sizeof(*params_out)); // TODO: actually set.
+  memset(params_out, 0, sizeof(*params_out)); // TODO-324: actually set this!
 
   switch (type) {
   case ONION_HANDSHAKE_TYPE_TAP:
@@ -450,9 +450,8 @@ onion_skin_client_handshake(int type,
   return -1;
 }
 
-//  handle the server message!
 {
-  //  TODO: see what the server said, make sure it's okay, see what
+  //  TODO-324: see what the server said, make sure it's okay, see what
   // parameters it gave us, make sure we like them, and put them into
   // `params_out`
 }
diff --git a/src/core/mainloop/cpuworker.c b/src/core/mainloop/cpuworker.c
index 8da042aa57..7ca66a1c45 100644
--- a/src/core/mainloop/cpuworker.c
+++ b/src/core/mainloop/cpuworker.c
@@ -390,7 +390,7 @@ cpuworker_onion_handshake_replyfn(void *work_)
 goto done_processing;
   }
 
-  /* TODO! We need to use rpl.circ_params here to initialize the congestion
+  /* TODO-324! We need to use rpl.circ_params here to initialize the congestion
  control parameters of the circuit. */
 
   log_debug(LD_OR,"onionskin_answer succeeded. Yay.");
diff --git a/src/core/or/circuitbuild.c b/src/core/or/circuitbuild.c
index ffb2c00493..53582d2829 100644
--- a/src/core/or/circuitbuild.c
+++ b/src/core/or/circuitbuild.c
@@ -1263,7 +1263,7 @@ circuit_finish_handshake(origin_circuit_t *circ,
 
   onion_handshake_state_release(>handshake_state);
 
-  //  TODO: use `params` to initialize the congestion control.
+  //  TODO-324: use `params` to initialize the congestion control.
 
   if (cpath_init_circuit_crypto(hop, keys, sizeof(keys), 0, 0)<0) {
 return -END_CIRC_REASON_TORPROTOCOL;
@@ -2600,6 +2600,6 @@ client_circ_negotiation_message(const extend_info_t *ei,
   if (! ei->supports_ntor3_and_param_negotiation)
 return -1;
 
-  /* TODO: fill in the client message that gets sent. */
+  /* TODO-324: fill in the client message that gets sent. */
   tor_assert_unreached();
 }
diff --git a/src/core/or/command.c b/src/core/or/command.c
index fd6cebe743..12e4c26768 100644
--- a/src/core/or/command.c
+++ b/src/core/or/command.c
@@ -381,8 

[tor-commits] [tor/main] Add circuit param payload definitions to trunnel

2022-02-22 Thread dgoulet
commit 095224cdfa5563973e4832c46f0d162310393156
Author: Mike Perry 
Date:   Thu Nov 4 00:01:33 2021 +

Add circuit param payload definitions to trunnel
---
 src/trunnel/circ_params.c   | 452 
 src/trunnel/circ_params.h   | 147 +
 src/trunnel/circ_params.trunnel |  25 +++
 src/trunnel/include.am  |   3 +
 4 files changed, 627 insertions(+)

diff --git a/src/trunnel/circ_params.c b/src/trunnel/circ_params.c
new file mode 100644
index 00..650b533a0c
--- /dev/null
+++ b/src/trunnel/circ_params.c
@@ -0,0 +1,452 @@
+/* circ_params.c -- generated by Trunnel v1.5.3.
+ * https://gitweb.torproject.org/trunnel.git
+ * You probably shouldn't edit this file.
+ */
+#include 
+#include "trunnel-impl.h"
+
+#include "circ_params.h"
+
+#define TRUNNEL_SET_ERROR_CODE(obj) \
+  do {  \
+(obj)->trunnel_error_code_ = 1; \
+  } while (0)
+
+#if defined(__COVERITY__) || defined(__clang_analyzer__)
+/* If we're running a static analysis tool, we don't want it to complain
+ * that some of our remaining-bytes checks are dead-code. */
+int circparams_deadcode_dummy__ = 0;
+#define OR_DEADCODE_DUMMY || circparams_deadcode_dummy__
+#else
+#define OR_DEADCODE_DUMMY
+#endif
+
+#define CHECK_REMAINING(nbytes, label)   \
+  do {   \
+if (remaining < (nbytes) OR_DEADCODE_DUMMY) {\
+  goto label;\
+}\
+  } while (0)
+
+circ_params_request_t *
+circ_params_request_new(void)
+{
+  circ_params_request_t *val = trunnel_calloc(1, 
sizeof(circ_params_request_t));
+  if (NULL == val)
+return NULL;
+  return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+circ_params_request_clear(circ_params_request_t *obj)
+{
+  (void) obj;
+}
+
+void
+circ_params_request_free(circ_params_request_t *obj)
+{
+  if (obj == NULL)
+return;
+  circ_params_request_clear(obj);
+  trunnel_memwipe(obj, sizeof(circ_params_request_t));
+  trunnel_free_(obj);
+}
+
+uint8_t
+circ_params_request_get_version(const circ_params_request_t *inp)
+{
+  return inp->version;
+}
+int
+circ_params_request_set_version(circ_params_request_t *inp, uint8_t val)
+{
+  if (! ((val == 0))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+  }
+  inp->version = val;
+  return 0;
+}
+uint8_t
+circ_params_request_get_cc_supported(const circ_params_request_t *inp)
+{
+  return inp->cc_supported;
+}
+int
+circ_params_request_set_cc_supported(circ_params_request_t *inp, uint8_t val)
+{
+  if (! ((val == 0 || val == 1))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+  }
+  inp->cc_supported = val;
+  return 0;
+}
+const char *
+circ_params_request_check(const circ_params_request_t *obj)
+{
+  if (obj == NULL)
+return "Object was NULL";
+  if (obj->trunnel_error_code_)
+return "A set function failed on this object";
+  if (! (obj->version == 0))
+return "Integer out of bounds";
+  if (! (obj->cc_supported == 0 || obj->cc_supported == 1))
+return "Integer out of bounds";
+  return NULL;
+}
+
+ssize_t
+circ_params_request_encoded_len(const circ_params_request_t *obj)
+{
+  ssize_t result = 0;
+
+  if (NULL != circ_params_request_check(obj))
+ return -1;
+
+
+  /* Length of u8 version IN [0] */
+  result += 1;
+
+  /* Length of u8 cc_supported IN [0, 1] */
+  result += 1;
+  return result;
+}
+int
+circ_params_request_clear_errors(circ_params_request_t *obj)
+{
+  int r = obj->trunnel_error_code_;
+  obj->trunnel_error_code_ = 0;
+  return r;
+}
+ssize_t
+circ_params_request_encode(uint8_t *output, const size_t avail, const 
circ_params_request_t *obj)
+{
+  ssize_t result = 0;
+  size_t written = 0;
+  uint8_t *ptr = output;
+  const char *msg;
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+  const ssize_t encoded_len = circ_params_request_encoded_len(obj);
+#endif
+
+  if (NULL != (msg = circ_params_request_check(obj)))
+goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+  trunnel_assert(encoded_len >= 0);
+#endif
+
+  /* Encode u8 version IN [0] */
+  trunnel_assert(written <= avail);
+  if (avail - written < 1)
+goto truncated;
+  trunnel_set_uint8(ptr, (obj->version));
+  written += 1; ptr += 1;
+
+  /* Encode u8 cc_supported IN [0, 1] */
+  trunnel_assert(written <= avail);
+  if (avail - written < 1)
+goto truncated;
+  trunnel_set_uint8(ptr, (obj->cc_supported));
+  written += 1; ptr += 1;
+
+
+  trunnel_assert(ptr == output + written);
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+  {
+trunnel_assert(encoded_len >= 0);
+trunnel_assert((size_t)encoded_len == written);
+  }
+
+#endif
+
+  return written;
+
+ truncated:
+  result = -2;
+  goto fail;
+ check_failed:
+  (void)msg;
+  result = -1;
+  goto fail;
+ fail:
+  trunnel_assert(result < 0);
+  return result;
+}
+
+/** As 

[tor-commits] [tor/main] Add stub argument for constructing congestion_control_t

2022-02-22 Thread dgoulet
commit 662b9c1c0d3a279359703487d97b155dcb89151a
Author: Nick Mathewson 
Date:   Tue Sep 14 17:13:05 2021 -0400

Add stub argument for constructing congestion_control_t
---
 src/core/or/congestion_control_common.c | 6 +-
 src/core/or/congestion_control_common.h | 5 -
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/core/or/congestion_control_common.c 
b/src/core/or/congestion_control_common.c
index 0919f037db..f2becb9b20 100644
--- a/src/core/or/congestion_control_common.c
+++ b/src/core/or/congestion_control_common.c
@@ -10,6 +10,7 @@
 
 #include "core/or/or.h"
 
+#include "core/crypto/onion_crypto.h"
 #include "core/or/circuitlist.h"
 #include "core/or/crypt_path.h"
 #include "core/or/or_circuit_st.h"
@@ -272,10 +273,13 @@ congestion_control_init(congestion_control_t *cc, 
cc_alg_t cc_alg,
 
 /** Allocate and initialize a new congestion control object */
 congestion_control_t *
-congestion_control_new(void)
+congestion_control_new(const circuit_params_t *params)
 {
   congestion_control_t *cc = tor_malloc_zero(sizeof(congestion_control_t));
 
+  /* TODO: Use `params` to pick the algorithm and the window. */
+  (void) params;
+
   // XXX: the alg and the sendme_inc need to be negotiated during
   // circuit handshake
   congestion_control_init(cc, CC_ALG_VEGAS, SENDME_INC_DFLT);
diff --git a/src/core/or/congestion_control_common.h 
b/src/core/or/congestion_control_common.h
index 01dbc1ceb4..1c44e6b0ef 100644
--- a/src/core/or/congestion_control_common.h
+++ b/src/core/or/congestion_control_common.h
@@ -20,7 +20,10 @@ typedef struct congestion_control_t congestion_control_t;
 
 void congestion_control_free_(congestion_control_t *cc);
 
-congestion_control_t *congestion_control_new(void);
+/* TODO: Whisky Tango Foxtot‽  Nothing calls this function anywhere! */
+struct circuit_params_t;
+congestion_control_t *congestion_control_new(
+const struct circuit_params_t *params);
 
 int congestion_control_dispatch_cc_alg(congestion_control_t *cc,
const circuit_t *circ,



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


[tor-commits] [tor/main] Hook up client usage of congestion control negotiation

2022-02-22 Thread dgoulet
commit 76bdadce121b0c33f46bb3d4e5eb0e8dc3277614
Author: Mike Perry 
Date:   Thu Nov 4 00:46:11 2021 +

Hook up client usage of congestion control negotiation
---
 src/core/or/circuitbuild.c| 52 ---
 src/core/or/circuituse.c  |  6 +++--
 src/core/or/command.c |  4 +--
 src/core/or/extend_info_st.h  |  7 +++---
 src/core/or/extendinfo.c  | 20 +--
 src/core/or/extendinfo.h  |  6 +++--
 src/feature/control/control_cmd.c |  5 +++-
 7 files changed, 72 insertions(+), 28 deletions(-)

diff --git a/src/core/or/circuitbuild.c b/src/core/or/circuitbuild.c
index 53582d2829..61d67c350d 100644
--- a/src/core/or/circuitbuild.c
+++ b/src/core/or/circuitbuild.c
@@ -72,6 +72,7 @@
 #include "feature/stats/predict_ports.h"
 #include "lib/crypt_ops/crypto_rand.h"
 #include "lib/trace/events.h"
+#include "core/or/congestion_control_common.h"
 
 #include "core/or/cell_st.h"
 #include "core/or/cpath_build_state_st.h"
@@ -80,6 +81,7 @@
 #include "feature/nodelist/node_st.h"
 #include "core/or/or_circuit_st.h"
 #include "core/or/origin_circuit_st.h"
+#include "trunnel/circ_params.h"
 
 static int circuit_send_first_onion_skin(origin_circuit_t *circ);
 static int circuit_build_no_more_hops(origin_circuit_t *circ);
@@ -841,7 +843,10 @@ circuit_pick_create_handshake(uint8_t *cell_type_out,
* using the TAP handshake, and CREATE2 otherwise. */
   if (extend_info_supports_ntor(ei)) {
 *cell_type_out = CELL_CREATE2;
-if (ei->supports_ntor3_and_param_negotiation)
+/* Only use ntor v3 with exits that support congestion control,
+ * and only when it is enabled. */
+if (ei->exit_supports_congestion_control &&
+congestion_control_enabled())
   *handshake_type_out = ONION_HANDSHAKE_TYPE_NTOR_V3;
 else
   *handshake_type_out = ONION_HANDSHAKE_TYPE_NTOR;
@@ -1263,12 +1268,14 @@ circuit_finish_handshake(origin_circuit_t *circ,
 
   onion_handshake_state_release(>handshake_state);
 
-  //  TODO-324: use `params` to initialize the congestion control.
-
   if (cpath_init_circuit_crypto(hop, keys, sizeof(keys), 0, 0)<0) {
 return -END_CIRC_REASON_TORPROTOCOL;
   }
 
+  if (params.cc_enabled) {
+hop->ccontrol = congestion_control_new();
+  }
+
   hop->state = CPATH_STATE_OPEN;
   log_info(LD_CIRC,"Finished building circuit hop:");
   circuit_log_path(LOG_INFO,LD_CIRC,circ);
@@ -2068,7 +2075,10 @@ onion_pick_cpath_exit(origin_circuit_t *circ, 
extend_info_t *exit_ei,
   log_warn(LD_CIRC,"Failed to choose an exit server");
   return -1;
 }
-exit_ei = extend_info_from_node(node, state->onehop_tunnel);
+exit_ei = extend_info_from_node(node, state->onehop_tunnel,
+/* for_exit_use */
+!state->is_internal && TO_CIRCUIT(circ)->purpose ==
+  CIRCUIT_PURPOSE_C_GENERAL);
 if (BUG(exit_ei == NULL))
   return -1;
   }
@@ -2464,7 +2474,7 @@ onion_extend_cpath(origin_circuit_t *circ)
  primary address, for potentially connecting to an IPv6 OR
  port. Servers always want the primary (IPv4) address. */
   int client = (server_mode(get_options()) == 0);
-  info = extend_info_from_node(r, client);
+  info = extend_info_from_node(r, client, false);
   /* Clients can fail to find an allowed address */
   tor_assert_nonfatal(info || client);
 }
@@ -2472,7 +2482,7 @@ onion_extend_cpath(origin_circuit_t *circ)
 const node_t *r =
   choose_good_middle_server(purpose, state, circ->cpath, cur_len);
 if (r) {
-  info = extend_info_from_node(r, 0);
+  info = extend_info_from_node(r, 0, false);
 }
   }
 
@@ -2597,9 +2607,33 @@ client_circ_negotiation_message(const extend_info_t *ei,
 size_t *msg_len_out)
 {
   tor_assert(ei && msg_out && msg_len_out);
-  if (! ei->supports_ntor3_and_param_negotiation)
+  circ_params_request_t params = {0};
+  ssize_t msg_len = 0;
+
+  if (! ei->exit_supports_congestion_control)
 return -1;
 
-  /* TODO-324: fill in the client message that gets sent. */
-  tor_assert_unreached();
+  circ_params_request_set_version(, 0);
+
+  circ_params_request_set_cc_supported(,
+   congestion_control_enabled());
+
+  msg_len = circ_params_request_encoded_len();
+
+  if (msg_len < 0) {
+return -1;
+  }
+
+  *msg_out = tor_malloc_zero(msg_len);
+
+  msg_len = circ_params_request_encode(*msg_out, msg_len, );
+
+  if (msg_len < 0) {
+tor_free(*msg_out);
+return -1;
+  }
+
+  *msg_len_out = (size_t)msg_len;
+
+  return 0;
 }
diff --git a/src/core/or/circuituse.c b/src/core/or/circuituse.c
index 104e898d6c..a259957d37 100644
--- a/src/core/or/circuituse.c
+++ b/src/core/or/circuituse.c
@@ -2427,7 +2427,8 @@ circuit_get_open_circ_or_launch(entry_connection_t *conn,
   /* We might want to connect to an IPv6 bridge for loading
  descriptors so we use the preferred address 

[tor-commits] [tor/main] Negotiated circuit parameters must pass from worker.

2022-02-22 Thread dgoulet
commit a511718a30796e9441cdd066bdce1ad00aaec046
Author: Nick Mathewson 
Date:   Tue Sep 14 17:06:30 2021 -0400

Negotiated circuit parameters must pass from worker.
---
 src/core/crypto/onion_crypto.c |  8 
 src/core/mainloop/cpuworker.c  | 11 +++
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/core/crypto/onion_crypto.c b/src/core/crypto/onion_crypto.c
index b0808b80a8..390151b5df 100644
--- a/src/core/crypto/onion_crypto.c
+++ b/src/core/crypto/onion_crypto.c
@@ -312,6 +312,14 @@ onion_skin_server_handshake(int type,
* parameters we've just negotiated
*/
 
+  /* NOTE! DANGER, DANGER, DANGER!
+
+ Remember that this function can be run in a worker thread, and so
+ therefore you can't access "global" state that isn't lock-protected.
+
+ CAVEAT HAXX0R!
+  */
+
   tor_free(client_msg);
 }
 
diff --git a/src/core/mainloop/cpuworker.c b/src/core/mainloop/cpuworker.c
index 2f6dae36a8..8da042aa57 100644
--- a/src/core/mainloop/cpuworker.c
+++ b/src/core/mainloop/cpuworker.c
@@ -158,6 +158,8 @@ typedef struct cpuworker_reply_t {
   uint8_t keys[CPATH_KEY_MATERIAL_LEN];
   /** Input to use for authenticating introduce1 cells. */
   uint8_t rend_auth_material[DIGEST_LEN];
+  /** Negotiated circuit parameters. */
+  circuit_params_t circ_params;
 } cpuworker_reply_t;
 
 typedef struct cpuworker_job_u_t {
@@ -387,6 +389,10 @@ cpuworker_onion_handshake_replyfn(void *work_)
 circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_INTERNAL);
 goto done_processing;
   }
+
+  /* TODO! We need to use rpl.circ_params here to initialize the congestion
+ control parameters of the circuit. */
+
   log_debug(LD_OR,"onionskin_answer succeeded. Yay.");
 
  done_processing:
@@ -416,7 +422,6 @@ cpuworker_onion_handshake_threadfn(void *state_, void 
*work_)
   const create_cell_t *cc = _cell;
   created_cell_t *cell_out = _cell;
   struct timeval tv_start = {0,0}, tv_end;
-  circuit_params_t params;
   int n;
   rpl.timed = req.timed;
   rpl.started_at = req.started_at;
@@ -430,7 +435,7 @@ cpuworker_onion_handshake_threadfn(void *state_, void 
*work_)
   sizeof(cell_out->reply),
   rpl.keys, CPATH_KEY_MATERIAL_LEN,
   rpl.rend_auth_material,
-  );
+  _params);
   if (n < 0) {
 /* failure */
 log_debug(LD_OR,"onion_skin_server_handshake failed.");
@@ -454,8 +459,6 @@ cpuworker_onion_handshake_threadfn(void *state_, void 
*work_)
 rpl.success = 1;
   }
 
-  // TODO: pass the parameters back up so we can initialize the cc paremeters.
-
   rpl.magic = CPUWORKER_REPLY_MAGIC;
   if (req.timed) {
 struct timeval tv_diff;



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


[tor-commits] [tor/main] Add an exported struct to onion handshakes for circuits params

2022-02-22 Thread dgoulet
commit 24e8b1ac36bf9148aa656e4eb9e293daa5b4
Author: Nick Mathewson 
Date:   Tue Sep 14 15:15:30 2021 -0400

Add an exported struct to onion handshakes for circuits params

THis will eventually hold the congestion control parameters that we
negotiated, plus whatever else is relevant.
---
 src/core/crypto/onion_crypto.c |  7 ++-
 src/core/crypto/onion_crypto.h | 14 +-
 src/core/mainloop/cpuworker.c  |  7 ++-
 src/core/or/circuitbuild.c |  4 
 src/core/or/command.c  |  7 ++-
 5 files changed, 35 insertions(+), 4 deletions(-)

diff --git a/src/core/crypto/onion_crypto.c b/src/core/crypto/onion_crypto.c
index 66c21bf655..f93c2c8c58 100644
--- a/src/core/crypto/onion_crypto.c
+++ b/src/core/crypto/onion_crypto.c
@@ -183,9 +183,11 @@ onion_skin_server_handshake(int type,
   uint8_t *reply_out,
   size_t reply_out_maxlen,
   uint8_t *keys_out, size_t keys_out_len,
-  uint8_t *rend_nonce_out)
+  uint8_t *rend_nonce_out,
+  circuit_params_t *params_out)
 {
   int r = -1;
+  memset(params_out, 0, sizeof(*params_out)); // TODO: actually set.
 
   switch (type) {
   case ONION_HANDSHAKE_TYPE_TAP:
@@ -262,11 +264,14 @@ onion_skin_client_handshake(int type,
   const uint8_t *reply, size_t reply_len,
   uint8_t *keys_out, size_t keys_out_len,
   uint8_t *rend_authenticator_out,
+  circuit_params_t *params_out,
   const char **msg_out)
 {
   if (handshake_state->tag != type)
 return -1;
 
+  memset(params_out, 0, sizeof(*params_out)); // TODO: actually set.
+
   switch (type) {
   case ONION_HANDSHAKE_TYPE_TAP:
 if (reply_len != TAP_ONIONSKIN_REPLY_LEN) {
diff --git a/src/core/crypto/onion_crypto.h b/src/core/crypto/onion_crypto.h
index bf25552b83..af8dd1f03f 100644
--- a/src/core/crypto/onion_crypto.h
+++ b/src/core/crypto/onion_crypto.h
@@ -22,6 +22,16 @@ typedef struct server_onion_keys_t {
 
 void onion_handshake_state_release(onion_handshake_state_t *state);
 
+/**
+ * Parameters negotiated as part of a circuit handshake.
+ */
+typedef struct circuit_params_t {
+  /* placeholder field for congestion control algorithm. Right now this
+   * is always set to zero */
+  int cc_algorithm;
+  int cc_window;
+} circuit_params_t;
+
 int onion_skin_create(int type,
   const extend_info_t *node,
   onion_handshake_state_t *state_out,
@@ -33,12 +43,14 @@ int onion_skin_server_handshake(int type,
   uint8_t *reply_out,
   size_t reply_out_maxlen,
   uint8_t *keys_out, size_t key_out_len,
-  uint8_t *rend_nonce_out);
+  uint8_t *rend_nonce_out,
+  circuit_params_t *negotiated_params_out);
 int onion_skin_client_handshake(int type,
   const onion_handshake_state_t *handshake_state,
   const uint8_t *reply, size_t reply_len,
   uint8_t *keys_out, size_t key_out_len,
   uint8_t *rend_authenticator_out,
+  circuit_params_t *negotiated_params_out,
   const char **msg_out);
 
 server_onion_keys_t *server_onion_keys_new(void);
diff --git a/src/core/mainloop/cpuworker.c b/src/core/mainloop/cpuworker.c
index b7b09784fa..2f6dae36a8 100644
--- a/src/core/mainloop/cpuworker.c
+++ b/src/core/mainloop/cpuworker.c
@@ -416,6 +416,7 @@ cpuworker_onion_handshake_threadfn(void *state_, void 
*work_)
   const create_cell_t *cc = _cell;
   created_cell_t *cell_out = _cell;
   struct timeval tv_start = {0,0}, tv_end;
+  circuit_params_t params;
   int n;
   rpl.timed = req.timed;
   rpl.started_at = req.started_at;
@@ -428,7 +429,8 @@ cpuworker_onion_handshake_threadfn(void *state_, void 
*work_)
   cell_out->reply,
   sizeof(cell_out->reply),
   rpl.keys, CPATH_KEY_MATERIAL_LEN,
-  rpl.rend_auth_material);
+  rpl.rend_auth_material,
+  );
   if (n < 0) {
 /* failure */
 log_debug(LD_OR,"onion_skin_server_handshake failed.");
@@ -451,6 +453,9 @@ cpuworker_onion_handshake_threadfn(void *state_, void 
*work_)
 }
 rpl.success = 1;
   }
+
+  // TODO: pass the parameters back up so we can initialize the cc paremeters.
+
   rpl.magic = CPUWORKER_REPLY_MAGIC;
   if (req.timed) {
 struct timeval tv_diff;
diff --git a/src/core/or/circuitbuild.c b/src/core/or/circuitbuild.c
index dc8d888c97..f67fe196e5 100644
--- a/src/core/or/circuitbuild.c
+++ b/src/core/or/circuitbuild.c
@@ -1242,6 +1242,7 @@ circuit_finish_handshake(origin_circuit_t *circ,
   }
   tor_assert(hop->state == 

[tor-commits] [tor/main] Add a size argument for the buffer on onion handshake functions

2022-02-22 Thread dgoulet
commit 358ce9a19d522d1e1cf9a119850e924ca106fec5
Author: Nick Mathewson 
Date:   Tue Sep 14 14:19:22 2021 -0400

Add a size argument for the buffer on onion handshake functions
---
 src/core/crypto/onion_crypto.c | 19 ---
 src/core/crypto/onion_crypto.h |  4 +++-
 src/core/mainloop/cpuworker.c  |  1 +
 src/core/or/circuitbuild.c |  6 --
 src/core/or/command.c  |  1 +
 5 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/src/core/crypto/onion_crypto.c b/src/core/crypto/onion_crypto.c
index f85ee2c82b..66c21bf655 100644
--- a/src/core/crypto/onion_crypto.c
+++ b/src/core/crypto/onion_crypto.c
@@ -103,19 +103,23 @@ onion_handshake_state_release(onion_handshake_state_t 
*state)
 
 /** Perform the first step of a circuit-creation handshake of type type
  * (one of ONION_HANDSHAKE_TYPE_*): generate the initial "onion skin" in
- * onion_skin_out, and store any state information in state_out.
+ * onion_skin_out with length of up to onion_skin_out_maxlen,
+ * and store any state information in state_out.
  * Return -1 on failure, and the length of the onionskin on acceptance.
  */
 int
 onion_skin_create(int type,
   const extend_info_t *node,
   onion_handshake_state_t *state_out,
-  uint8_t *onion_skin_out)
+  uint8_t *onion_skin_out,
+  size_t onion_skin_out_maxlen)
 {
   int r = -1;
 
   switch (type) {
   case ONION_HANDSHAKE_TYPE_TAP:
+if (onion_skin_out_maxlen < TAP_ONIONSKIN_CHALLENGE_LEN)
+  return -1;
 if (!node->onion_key)
   return -1;
 
@@ -133,7 +137,9 @@ onion_skin_create(int type,
 r = CREATE_FAST_LEN;
 break;
   case ONION_HANDSHAKE_TYPE_NTOR:
-if (!extend_info_supports_ntor(node))
+if (onion_skin_out_maxlen < NTOR_ONIONSKIN_LEN)
+  return -1;
+   if (!extend_info_supports_ntor(node))
   return -1;
 if (onion_skin_ntor_create((const uint8_t*)node->identity_digest,
>curve25519_onion_key,
@@ -175,6 +181,7 @@ onion_skin_server_handshake(int type,
   const uint8_t *onion_skin, size_t onionskin_len,
   const server_onion_keys_t *keys,
   uint8_t *reply_out,
+  size_t reply_out_maxlen,
   uint8_t *keys_out, size_t keys_out_len,
   uint8_t *rend_nonce_out)
 {
@@ -182,6 +189,8 @@ onion_skin_server_handshake(int type,
 
   switch (type) {
   case ONION_HANDSHAKE_TYPE_TAP:
+if (reply_out_maxlen < TAP_ONIONSKIN_REPLY_LEN)
+  return -1;
 if (onionskin_len != TAP_ONIONSKIN_CHALLENGE_LEN)
   return -1;
 if (onion_skin_TAP_server_handshake((const char*)onion_skin,
@@ -193,6 +202,8 @@ onion_skin_server_handshake(int type,
 memcpy(rend_nonce_out, reply_out+DH1024_KEY_LEN, DIGEST_LEN);
 break;
   case ONION_HANDSHAKE_TYPE_FAST:
+if (reply_out_maxlen < CREATED_FAST_LEN)
+  return -1;
 if (onionskin_len != CREATE_FAST_LEN)
   return -1;
 if (fast_server_handshake(onion_skin, reply_out, keys_out, keys_out_len)<0)
@@ -201,6 +212,8 @@ onion_skin_server_handshake(int type,
 memcpy(rend_nonce_out, reply_out+DIGEST_LEN, DIGEST_LEN);
 break;
   case ONION_HANDSHAKE_TYPE_NTOR:
+if (reply_out_maxlen < NTOR_REPLY_LEN)
+  return -1;
 if (onionskin_len < NTOR_ONIONSKIN_LEN)
   return -1;
 {
diff --git a/src/core/crypto/onion_crypto.h b/src/core/crypto/onion_crypto.h
index 68cd465cf7..bf25552b83 100644
--- a/src/core/crypto/onion_crypto.h
+++ b/src/core/crypto/onion_crypto.h
@@ -25,11 +25,13 @@ void onion_handshake_state_release(onion_handshake_state_t 
*state);
 int onion_skin_create(int type,
   const extend_info_t *node,
   onion_handshake_state_t *state_out,
-  uint8_t *onion_skin_out);
+  uint8_t *onion_skin_out,
+  size_t onion_skin_out_maxlen);
 int onion_skin_server_handshake(int type,
   const uint8_t *onion_skin, size_t onionskin_len,
   const server_onion_keys_t *keys,
   uint8_t *reply_out,
+  size_t reply_out_maxlen,
   uint8_t *keys_out, size_t key_out_len,
   uint8_t *rend_nonce_out);
 int onion_skin_client_handshake(int type,
diff --git a/src/core/mainloop/cpuworker.c b/src/core/mainloop/cpuworker.c
index 17855b8567..b7b09784fa 100644
--- a/src/core/mainloop/cpuworker.c
+++ b/src/core/mainloop/cpuworker.c
@@ -426,6 +426,7 @@ cpuworker_onion_handshake_threadfn(void *state_, void 
*work_)
   cc->onionskin, cc->handshake_len,
   onion_keys,
   cell_out->reply,
+  sizeof(cell_out->reply),
   rpl.keys, CPATH_KEY_MATERIAL_LEN,
   

[tor-commits] [tor/main] Use protover to signal support for ntor3 + congestion control.

2022-02-22 Thread dgoulet
commit baaabb503c9c9fc81e0d95b2d5baeefef7423b7a
Author: Nick Mathewson 
Date:   Tue Sep 14 16:31:48 2021 -0400

Use protover to signal support for ntor3 + congestion control.
---
 src/core/or/circuituse.c   |  3 ++-
 src/core/or/extendinfo.c   | 14 ++
 src/core/or/extendinfo.h   |  3 ++-
 src/core/or/or.h   |  4 
 src/core/or/protover.c |  2 ++
 src/core/or/versions.c |  9 +
 src/feature/hs/hs_common.c |  6 +-
 src/feature/nodelist/nodelist.c|  2 +-
 src/feature/relay/circuitbuild_relay.c |  3 ++-
 src/feature/relay/selftest.c   |  3 ++-
 src/test/test_circuitpadding.c |  2 +-
 src/test/test_hs_client.c  |  8 
 12 files changed, 44 insertions(+), 15 deletions(-)

diff --git a/src/core/or/circuituse.c b/src/core/or/circuituse.c
index 2ec391eca0..104e898d6c 100644
--- a/src/core/or/circuituse.c
+++ b/src/core/or/circuituse.c
@@ -2462,7 +2462,8 @@ circuit_get_open_circ_or_launch(entry_connection_t *conn,
   digest,
   NULL, /* Ed25519 ID */
   NULL, NULL, /* onion keys */
-  , conn->socks_request->port);
+  , conn->socks_request->port,
+  NULL);
   } else { /* ! (want_onehop && conn->chosen_exit_name[0] == '$') */
 /* We will need an onion key for the router, and we
  * don't have one. Refuse or relax requirements. */
diff --git a/src/core/or/extendinfo.c b/src/core/or/extendinfo.c
index f33e887e7d..ca2288e0a4 100644
--- a/src/core/or/extendinfo.c
+++ b/src/core/or/extendinfo.c
@@ -35,7 +35,8 @@ extend_info_new(const char *nickname,
 const ed25519_public_key_t *ed_id,
 crypto_pk_t *onion_key,
 const curve25519_public_key_t *ntor_key,
-const tor_addr_t *addr, uint16_t port)
+const tor_addr_t *addr, uint16_t port,
+const protover_summary_flags_t *pv)
 {
   extend_info_t *info = tor_malloc_zero(sizeof(extend_info_t));
   if (rsa_id_digest)
@@ -57,7 +58,10 @@ extend_info_new(const char *nickname,
 extend_info_add_orport(info, addr, port);
   }
 
-  info->supports_ntor3_and_param_negotiation = false; // TODO: set this.
+  if (pv) {
+info->supports_ntor3_and_param_negotiation =
+  pv->supports_ntor3_and_param_negotiation;
+  }
 
   return info;
 }
@@ -152,7 +156,8 @@ extend_info_from_node(const node_t *node, int 
for_direct_connect)
rsa_pubkey,
curve_pubkey,
,
-   ap.port);
+   ap.port,
+   >ri->pv);
   } else if (valid_addr && node->rs && node->md) {
 info = extend_info_new(node->rs->nickname,
node->identity,
@@ -160,7 +165,8 @@ extend_info_from_node(const node_t *node, int 
for_direct_connect)
rsa_pubkey,
curve_pubkey,
,
-   ap.port);
+   ap.port,
+   >rs->pv);
   }
 
   crypto_pk_free(rsa_pubkey);
diff --git a/src/core/or/extendinfo.h b/src/core/or/extendinfo.h
index ffe8317431..8781cc7047 100644
--- a/src/core/or/extendinfo.h
+++ b/src/core/or/extendinfo.h
@@ -17,7 +17,8 @@ extend_info_t *extend_info_new(const char *nickname,
const struct ed25519_public_key_t *ed_id,
crypto_pk_t *onion_key,
const struct curve25519_public_key_t *ntor_key,
-   const tor_addr_t *addr, uint16_t port);
+   const tor_addr_t *addr, uint16_t port,
+   const struct protover_summary_flags_t *pv);
 extend_info_t *extend_info_from_node(const node_t *r, int for_direct_connect);
 extend_info_t *extend_info_dup(extend_info_t *info);
 void extend_info_free_(extend_info_t *info);
diff --git a/src/core/or/or.h b/src/core/or/or.h
index 3911797563..409f4a0fea 100644
--- a/src/core/or/or.h
+++ b/src/core/or/or.h
@@ -732,6 +732,10 @@ typedef struct protover_summary_flags_t {
* negotiate hs circuit setup padding. Requires Padding=2. */
   unsigned int supports_hs_setup_padding : 1;
 
+  /** True iff this router supports ntor3 _and_ supports negotiating
+   * additional circuit parameters via the handshake used in ntor3.
+   */
+  unsigned int supports_ntor3_and_param_negotiation : 1;
 } protover_summary_flags_t;
 
 typedef struct routerinfo_t routerinfo_t;
diff --git a/src/core/or/protover.c b/src/core/or/protover.c
index bd9cc60115..63e9a33b72 100644
--- a/src/core/or/protover.c
+++ 

[tor-commits] [tor/main] Implement core of ntor3 negotiation.

2022-02-22 Thread dgoulet
commit bd2e9a44097ff85934bc1c34f4fce2017a7a92c8
Author: Nick Mathewson 
Date:   Tue Sep 14 15:01:45 2021 -0400

Implement core of ntor3 negotiation.

There are a lot of TODOs about what to send, whom to send it to, and
etc.
---
 src/core/crypto/onion_crypto.c| 136 ++
 src/core/crypto/onion_crypto.h|   3 +
 src/core/or/circuitbuild.c|  26 +++-
 src/core/or/circuitbuild.h|   4 ++
 src/core/or/crypt_path_st.h   |   3 +
 src/core/or/extend_info_st.h  |   3 +
 src/core/or/extendinfo.c  |  12 
 src/core/or/extendinfo.h  |   1 +
 src/core/or/or.h  |   3 +-
 src/feature/relay/relay_metrics.c |   2 +
 10 files changed, 191 insertions(+), 2 deletions(-)

diff --git a/src/core/crypto/onion_crypto.c b/src/core/crypto/onion_crypto.c
index f93c2c8c58..b0808b80a8 100644
--- a/src/core/crypto/onion_crypto.c
+++ b/src/core/crypto/onion_crypto.c
@@ -35,14 +35,25 @@
 #include "core/crypto/onion_crypto.h"
 #include "core/crypto/onion_fast.h"
 #include "core/crypto/onion_ntor.h"
+#include "core/crypto/onion_ntor_v3.h"
 #include "core/crypto/onion_tap.h"
 #include "feature/relay/router.h"
 #include "lib/crypt_ops/crypto_dh.h"
 #include "lib/crypt_ops/crypto_util.h"
+#include "feature/relay/routerkeys.h"
+
+#include "core/or/circuitbuild.h"
 
 #include "core/or/crypt_path_st.h"
 #include "core/or/extend_info_st.h"
 
+/* TODO: Add this to the specification! */
+const uint8_t NTOR3_CIRC_VERIFICATION[] = "circuit extend";
+const size_t NTOR3_CIRC_VERIFICATION_LEN = 14;
+
+#define NTOR3_VERIFICATION_ARGS \
+  NTOR3_CIRC_VERIFICATION, NTOR3_CIRC_VERIFICATION_LEN
+
 /** Return a new server_onion_keys_t object with all of the keys
  * and other info we might need to do onion handshakes.  (We make a copy of
  * our keys for each cpuworker to avoid race conditions with the main thread,
@@ -52,6 +63,7 @@ server_onion_keys_new(void)
 {
   server_onion_keys_t *keys = tor_malloc_zero(sizeof(server_onion_keys_t));
   memcpy(keys->my_identity, router_get_my_id_digest(), DIGEST_LEN);
+  ed25519_pubkey_copy(>my_ed_identity, get_master_identity_key());
   dup_onion_keys(>onion_key, >last_onion_key);
   keys->curve25519_key_map = construct_ntor_key_map();
   keys->junk_keypair = tor_malloc_zero(sizeof(curve25519_keypair_t));
@@ -91,6 +103,9 @@ onion_handshake_state_release(onion_handshake_state_t *state)
 ntor_handshake_state_free(state->u.ntor);
 state->u.ntor = NULL;
 break;
+  case ONION_HANDSHAKE_TYPE_NTOR_V3:
+ntor3_handshake_state_free(state->u.ntor3);
+break;
   default:
 /* LCOV_EXCL_START
  * This state should not even exist. */
@@ -149,6 +164,37 @@ onion_skin_create(int type,
 
 r = NTOR_ONIONSKIN_LEN;
 break;
+  case ONION_HANDSHAKE_TYPE_NTOR_V3:
+if (!extend_info_supports_ntor_v3(node))
+  return -1;
+if (ed25519_public_key_is_zero(>ed_identity))
+  return -1;
+size_t msg_len = 0;
+uint8_t *msg = NULL;
+if (client_circ_negotiation_message(node, , _len) < 0)
+  return -1;
+uint8_t *onion_skin = NULL;
+size_t onion_skin_len = 0;
+int status = onion_skin_ntor3_create(
+ >ed_identity,
+ >curve25519_onion_key,
+ NTOR3_VERIFICATION_ARGS,
+ msg, msg_len, /* client message */
+ _out->u.ntor3,
+ _skin, _skin_len);
+tor_free(msg);
+if (status < 0) {
+  return -1;
+}
+if (onion_skin_len > onion_skin_out_maxlen) {
+  tor_free(onion_skin);
+  return -1;
+}
+memcpy(onion_skin_out, onion_skin, onion_skin_len);
+tor_free(onion_skin);
+r = (int) onion_skin_len;
+break;
+
   default:
 /* LCOV_EXCL_START
  * We should never try to create an impossible handshake type. */
@@ -238,6 +284,64 @@ onion_skin_server_handshake(int type,
   r = NTOR_REPLY_LEN;
 }
 break;
+  case ONION_HANDSHAKE_TYPE_NTOR_V3: {
+size_t keys_tmp_len = keys_out_len + DIGEST_LEN;
+tor_assert(keys_tmp_len <= MAX_KEYS_TMP_LEN);
+uint8_t keys_tmp[MAX_KEYS_TMP_LEN];
+uint8_t *client_msg = NULL;
+size_t client_msg_len = 0;
+ntor3_server_handshake_state_t *state = NULL;
+
+if (onion_skin_ntor3_server_handshake_part1(
+   keys->curve25519_key_map,
+   keys->junk_keypair,
+   >my_ed_identity,
+   onion_skin, onionskin_len,
+   NTOR3_VERIFICATION_ARGS,
+   _msg, _msg_len,
+   ) < 0) {
+  return -1;
+}
+
+uint8_t reply_msg[1] = { 0 };
+size_t reply_msg_len = 1;
+{
+  /* TODO, Okay, we have a message from the client trying to negotiate
+   * parameters.  We need to decide whether the client's request is
+   * okay, what we're going to say in response, and what circuit
+   * parameters we've just negotiated
+   */

[tor-commits] [tor-browser-build/master] Merge remote-tracking branch 'aguestusergl/bug-40432_inject-commit-hash-into-ac-build-gradle'

2022-02-22 Thread sysrqb
commit 31d14ca8ba005d6ed3c47d48f57154349347fd33
Merge: ee06082 ffd060c
Author: Matthew Finkel 
Date:   Tue Feb 22 20:44:32 2022 +

Merge remote-tracking branch 
'aguestusergl/bug-40432_inject-commit-hash-into-ac-build-gradle'

 projects/android-components/build |  7 ++-
 projects/android-components/config|  1 -
 projects/android-components/git.patch | 36 ---
 3 files changed, 6 insertions(+), 38 deletions(-)

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


[tor-commits] [tor-browser-build/master] Merge remote-tracking branch 'aguestusergl/mozilla96-clean'

2022-02-22 Thread sysrqb
commit ee060820212cd0541c84f53950511bac251a62ca
Merge: d5a045b 88ba007
Author: Matthew Finkel 
Date:   Tue Feb 22 20:44:12 2022 +

Merge remote-tracking branch 'aguestusergl/mozilla96-clean'

 projects/android-components/build  |   0
 projects/android-components/config |   8 +-
 .../gradle-dependencies-list.txt   | 343 +-
 .../list_toolchain_updates_checks  |   2 +-
 projects/android-toolchain/build   |  20 +-
 projects/android-toolchain/config  |  15 +-
 projects/application-services/config   |  12 +-
 .../gradle-dependencies-list.txt   |  81 +--
 projects/common/gen_gradle_deps_file.sh|  30 +-
 projects/fenix/build   |   4 +
 projects/fenix/config  |   8 +-
 projects/fenix/gradle-dependencies-list.txt| 703 +++--
 projects/fenix/list_toolchain_updates_checks   |   3 +-
 projects/geckoview/build   |   2 +-
 projects/geckoview/config  |   6 +-
 projects/geckoview/gradle-dependencies-list.txt|  37 +-
 projects/geckoview/list_toolchain_updates_checks   |  18 +-
 projects/glean/config  |   6 +-
 projects/llvm-project/config   |  18 +-
 projects/rust/config   |   4 +-
 20 files changed, 747 insertions(+), 573 deletions(-)



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


[tor-commits] [tor-browser-build/master] Bug 40418: Update components for mozilla96: android-components part

2022-02-22 Thread sysrqb
commit 967e282257e273e5a27dc0e843901951e3c035a9
Author: aguestuser 
Date:   Thu Feb 10 16:58:55 2022 -0500

Bug 40418: Update components for mozilla96: android-components part
---
 projects/android-components/build  |   0
 projects/android-components/config |   6 +-
 .../gradle-dependencies-list.txt   | 186 +
 .../list_toolchain_updates_checks  |   0
 4 files changed, 115 insertions(+), 77 deletions(-)

diff --git a/projects/android-components/build 
b/projects/android-components/build
old mode 100644
new mode 100755
diff --git a/projects/android-components/config 
b/projects/android-components/config
index 2cbe421..79a7c6d 100644
--- a/projects/android-components/config
+++ b/projects/android-components/config
@@ -8,14 +8,14 @@ gpg_keyring: torbutton.gpg
 variant: '[% IF c("var/release") %]Release[% ELSE %]Beta[% END %]'
 
 var:
-  android_components_version: 95.0.10
+  android_components_version: 96.0.15
   torbrowser_branch: 11.5
   container:
 use_container: 1
   # This should be updated when the list of gradle dependencies is changed.
-  gradle_dependencies_version: 33
+  gradle_dependencies_version: 34
   gradle_version: 7.0.2
-  glean_parser: 4.0.0
+  glean_parser: 4.2.0
   git_branch: '[% project %]-[% c("var/android_components_version") %]-[% 
c("var/torbrowser_branch") %]-1'
   arch_deps:
 - python3-venv
diff --git a/projects/android-components/gradle-dependencies-list.txt 
b/projects/android-components/gradle-dependencies-list.txt
index 7dd915e..725a464 100644
--- a/projects/android-components/gradle-dependencies-list.txt
+++ b/projects/android-components/gradle-dependencies-list.txt
@@ -3,20 +3,29 @@
 sha256sum | url
 1ca65cbf8948ef3d82dfe70fbf2b2f6805b88dbe7385c67757d601bd5068523c | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-compose/1.3.1/activity-compose-1.3.1.aar
 09c1c387dfdcb2252ba95c032ad66929115c7e82805d9fbe9653114bc6aa5d9d | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-compose/1.3.1/activity-compose-1.3.1.pom
+82f97c1c4b96d15ee721b8204bd1273f80bcc654e50d0b16ca5399c77f6c3531 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-compose/1.4.0/activity-compose-1.4.0.aar
+fda86260ff1a96555bd0f48a4cddc7c34d67be7a9b22e70912a3c5c5ed777084 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-compose/1.4.0/activity-compose-1.4.0.pom
 1996c36d3d2d62db5020b8ec634b5f854b1a698960c3552e1a00c69221baeabe | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-ktx/1.1.0/activity-ktx-1.1.0.aar
 87ff101e17596b8200e4acd9bd4a9d9688514dcf279b7c8cadcf569a63c9707f | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-ktx/1.1.0/activity-ktx-1.1.0.pom
 9adc905de021afe039e4107a49c0bead35661c69a8a8086af448d01ecd5d6130 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-ktx/1.3.1/activity-ktx-1.3.1.aar
 3de7a39b56272ee215f7a2b612a1a06d063a2eb5cd00599967f87731e3ffa8a2 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-ktx/1.3.1/activity-ktx-1.3.1.pom
+3f301941f37a90b4bc553dbbe84e7464a97c0d21df6cf2d6c0cb1b2c07349f33 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-ktx/1.4.0/activity-ktx-1.4.0.aar
+d29033cb7cf27110cef748006cbf423b18a37cf004020081e988df08b060a6f4 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-ktx/1.4.0/activity-ktx-1.4.0.pom
+4f2b35916768032f7d0c20e250e28b29037ed4ce9ebf3da4fcd51bcb0c6067ef | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.1.0/activity-1.1.0.aar
 3690001fc5a57ad176cacf7a13f56219bffb73b93c7978dbac1e1e5db082d6c0 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.1.0/activity-1.1.0.pom
+e165fb20f006b77894d349572cc3acd2760baa8416ae4d33cb8de6a84dd6730c | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.2.2/activity-1.2.2.aar
 c0b58996a4cd97182dfe2a38f0c930a2fc98b05d5946e012c521734b39ec5017 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.2.2/activity-1.2.2.pom
 1dce0705c334a6b2ef03382418dc7586f4e57ee23817267b403ea8cfc36c824e | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.2.3/activity-1.2.3.aar
 bcaddc925d51d5566c45a4a6cf3bf05c7144a634871308d0e73d3e2703ad74e0 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.2.3/activity-1.2.3.pom
 6006f41c11e6ea41e7109a70c1db361735b12a9005dd0a6f7c18c3697a9c8b34 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.3.1/activity-1.3.1.aar
 ad002bf2b7834b2db9d95b6feb63a134669607f724ef100bca2d3b0db0893c7f | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.3.1/activity-1.3.1.pom
+89dc38e0cdbd11f328c7d0b3b021ddb387ca9da0d49f14b18c91e300c45ed79c | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.4.0/activity-1.4.0.aar
+08eb3cc490622f4c992ae96a48b136f273f0d9c1636be4a929dfc033c70b004a | 

[tor-commits] [tor-browser-build/master] Bug 40418: Update components for mozilla96: application-services part

2022-02-22 Thread sysrqb
commit d1fa88d3dd5971b4b959682a00099c64c683d6e7
Author: aguestuser 
Date:   Thu Feb 10 16:53:27 2022 -0500

Bug 40418: Update components for mozilla96: application-services part
---
 projects/application-services/config   | 10 +--
 .../gradle-dependencies-list.txt   | 81 --
 2 files changed, 50 insertions(+), 41 deletions(-)

diff --git a/projects/application-services/config 
b/projects/application-services/config
index 0dcd74f..76d2896 100644
--- a/projects/application-services/config
+++ b/projects/application-services/config
@@ -1,7 +1,7 @@
 # vim: filetype=yaml sw=2
 filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
-version: 86.0.1
-git_hash: 63f11a6879d43acda9c9de4f74a537b338e306ab
+version: 86.2.2
+git_hash: 8c36c7c49e577b92af9328577ccae6795c3b909d
 git_url: https://github.com/mozilla/application-services
 git_submodule: 1
 
@@ -9,9 +9,9 @@ var:
   container:
 use_container: 1
   # This should be updated when the list of gradle dependencies is changed.
-  gradle_dependencies_version: 7
+  gradle_dependencies_version: 8
   gradle_version: 6.7.1
-  glean_parser: 3.4.0
+  glean_parser: 4.0.0
   arch_deps:
 - python3-venv
 
@@ -91,7 +91,7 @@ input_files:
 enable: '[% !c("var/fetch_gradle_dependencies") %]'
   # Use `make cargo_vendor-application-services` to re-generate the vendor 
tarball
   - URL: 
https://people.torproject.org/~boklm/mirrors/sources/application-services-vendor-[%
 c('version') %].tar.bz2
-sha256sum: 0b4136ac67083801a758cb87ba2eb8744d471c42b1ed28fc33517227b4224f80
+sha256sum: 5f202dcc07b31df5a375b07163c4c3bd4574ac272bfc55d65d3c8369b36730a5
   - filename: no-git.patch
   - filename: mavenLocal.patch
 enable: '[% !c("var/fetch_gradle_dependencies") %]'
diff --git a/projects/application-services/gradle-dependencies-list.txt 
b/projects/application-services/gradle-dependencies-list.txt
index 3c33d34..37f5320 100644
--- a/projects/application-services/gradle-dependencies-list.txt
+++ b/projects/application-services/gradle-dependencies-list.txt
@@ -5,6 +5,7 @@ sha256sum | url
 bcaddc925d51d5566c45a4a6cf3bf05c7144a634871308d0e73d3e2703ad74e0 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.2.3/activity-1.2.3.pom
 b219d2b568e7e4ba534e09f8c2fd242343df6ccbdfbbe938846f5d740e6b0b11 | 
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation-experimental/1.0.0/annotation-experimental-1.0.0.aar
 6b73ff6608f4b1d6cbab620b65708a382d0b39901cf4e6b0d16f84a1b04d7732 | 
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation-experimental/1.0.0/annotation-experimental-1.0.0.pom
+d38d63edb30f1467818d50aaf05f8a692dea8b31392a049bfa991b159ad5b692 | 
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.1.0/annotation-1.1.0.jar
 2e9372ba7780ef44952adbf86b66e1f08682c1e5277c926185f6564a13799efe | 
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.1.0/annotation-1.1.0.pom
 9029262bddce116e6d02be499e4afdba21f24c239087b76b3b57d7e98b490a36 | 
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.2.0/annotation-1.2.0.jar
 62fb6dca2777efe08e7077d6b872d69110619df7fc21c99a6f54066499cc0383 | 
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.2.0/annotation-1.2.0.pom
@@ -16,6 +17,7 @@ 
fe1237bf029d063e7f29fe39aeaf73ef74c8b0a3658486fc29d3c54326653889 | https://dl.go
 83bbb3960eaabc600ac366c94cb59414e441532a1d6aa9388b0b8bfface5cf01 | 
https://dl.google.com/dl/android/maven2/androidx/arch/core/core-common/2.1.0/core-common-2.1.0.pom
 dd77615bd3dd275afb11b62df25bae46b10b4a117cd37943af45bdcbf8755852 | 
https://dl.google.com/dl/android/maven2/androidx/arch/core/core-runtime/2.1.0/core-runtime-2.1.0.aar
 c0c4ed0160cd2ca18390015de8b392b697c173327c6b2c0947d4e62f6958c05d | 
https://dl.google.com/dl/android/maven2/androidx/arch/core/core-runtime/2.1.0/core-runtime-2.1.0.pom
+9c8d117b5c2bc120a1cdfeb857e05b495b16c36013570372a708f7827e3ac9f9 | 
https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.0.0/collection-1.0.0.jar
 a7913a5275ad68e555d2612ebe8c14c367b153e14ca48a1872a64899020e54ef | 
https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.0.0/collection-1.0.0.pom
 632a0e5407461de774409352940e292a291037724207a787820c77daf7d33b72 | 
https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.1.0/collection-1.1.0.jar
 67e9066ca4acfdc6e3cc508293c31ba0398057ff118e4f70b1e1813c9a3456d1 | 
https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.1.0/collection-1.1.0.pom
@@ -33,8 +35,8 @@ 
b1aaf40152c4c610280a35ae439a31d86aa7fbbb5d3379036ecf012b290a19b7 | https://dl.go
 e67bc6c3d337678de3ddaf28c61a495ecb12eabd66678a0ebeb66f7e84f948f4 | 
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/4.2.2/databinding-common-4.2.2.pom
 ec212fbdb77e41386b5b423b12b69f4d839f954c79d449bc57c648e603a1b755 | 

[tor-commits] [tor-browser-build/master] Bug 40432: Inject commit hash into AC build.gradle files at build-time

2022-02-22 Thread sysrqb
commit ffd060c9f190af53af6b1f6a88ba4f024090f1d4
Author: aguestuser 
Date:   Fri Feb 11 21:50:17 2022 -0500

Bug 40432: Inject commit hash into AC build.gradle files at build-time

context
- In a3a5306f, we added a patch to the android-components build
process that prevents gradle from invoking `git rev-parse` to obtain
the current build's commit hash (because `git` is absent in our build
containers and invoking it will abort the build), instead simply
inserting the dummy string "release build" where the hash would have occured
- However, having the git hash in build artifacts can be quite useful
for debugging later, so we'd like to preserve it, if we can.

changes
- Here, we inject the commit hash into the android-components
`build.gradle` files using `sed` and `c("abbrev")` as we will soon
also do in the fenix build process in 5912606f
---
 projects/android-components/build |  7 ++-
 projects/android-components/config|  1 -
 projects/android-components/git.patch | 36 ---
 3 files changed, 6 insertions(+), 38 deletions(-)

diff --git a/projects/android-components/build 
b/projects/android-components/build
old mode 100644
new mode 100755
index 0500fbd..1199cb0
--- a/projects/android-components/build
+++ b/projects/android-components/build
@@ -35,7 +35,12 @@ EOF
 tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
 
 cd $builddir-[% c('version') %]
-patch -p1 < $rootdir/git.patch
+
+# Avoid call to `getGitHash()`, which will fail b/c it invokes git, which is 
absent in
+# the build container. Instead just inject the commit hash, which we know!
+sed -i 's/getGitHash()/\"[% c('abbrev') %]\"/' 
components/support/base/build.gradle
+sed -i 's/tag = getGitHash()/tag = \"[% c('abbrev') %]\"/' publish.gradle
+
 [% IF c("var/fetch_gradle_dependencies") %]
   # XXX: fetching deps for `assembleGeckoBeta -x lint` by using that same 
target
   # results in some missing dependencies for yet unknown reasons. Thus, we use
diff --git a/projects/android-components/config 
b/projects/android-components/config
index 11b7413..5b390b2 100644
--- a/projects/android-components/config
+++ b/projects/android-components/config
@@ -45,7 +45,6 @@ input_files:
 name: gradle-dependencies
 exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
 enable: '[% !c("var/fetch_gradle_dependencies") %]'
-  - filename: git.patch
   - filename: mavenLocal.patch
 enable: '[% !c("var/fetch_gradle_dependencies") %]'
   - URL: '[% pc("glean", "var/glean_wheels_url/" _ c("var/glean_parser"), { 
error_if_undef => 1 }) %]'
diff --git a/projects/android-components/git.patch 
b/projects/android-components/git.patch
deleted file mode 100644
index 23cf1c5..000
--- a/projects/android-components/git.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From ad3f56a9e977b8c83643cfcf6f90b03176392c1f Mon Sep 17 00:00:00 2001
-From: Georg Koppen 
-Date: Sun, 19 Apr 2020 17:59:16 +
-Subject: [PATCH 1/2] git patch
-

- components/support/base/build.gradle | 2 +-
- publish.gradle   | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/components/support/base/build.gradle 
b/components/support/base/build.gradle
-index 3a0ae5002..cffb310d5 100644
 a/components/support/base/build.gradle
-+++ b/components/support/base/build.gradle
-@@ -38,7 +38,7 @@ android {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 
'proguard-rules.pro'
- 
--buildConfigField("String", "GIT_HASH", "\"" + getGitHash() + "\"")
-+buildConfigField("String", "GIT_HASH", "\"release build\"")
- }
- }
- 
-diff --git a/publish.gradle b/publish.gradle
-index 6bbd206d8..e27c00f67 100644
 a/publish.gradle
-+++ b/publish.gradle
-@@ -66,7 +66,7 @@ ext.configurePublish = { groupIdArg, artifactIdArg, 
descriptionArg ->
- connection = libVcsUrl
- developerConnection = libVcsUrl
- url = libUrl
--tag = getGitHash()
-+tag = "release build"
- }
- }
- }



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


[tor-commits] [tor-browser-build/master] Bug 40417: Make the list of components updates for switch to mozilla96-based Fenix

2022-02-22 Thread sysrqb
commit bbdca0c73825c5d0920f5cd2a57739305f661e5a
Author: Nicolas Vigier 
Date:   Wed Jan 19 16:36:20 2022 +0100

Bug 40417: Make the list of components updates for switch to 
mozilla96-based Fenix
---
 projects/android-components/config| 2 +-
 projects/android-components/list_toolchain_updates_checks | 2 +-
 projects/application-services/config  | 2 +-
 projects/fenix/config | 2 +-
 projects/fenix/list_toolchain_updates_checks  | 2 +-
 projects/geckoview/config | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/projects/android-components/config 
b/projects/android-components/config
index 47928c2..2cbe421 100644
--- a/projects/android-components/config
+++ b/projects/android-components/config
@@ -58,7 +58,7 @@ input_files:
 steps:
   list_toolchain_updates:
 git_url: https://github.com/mozilla-mobile/android-components.git
-git_hash: releases/95.0
+git_hash: releases/96.0
 #tag_gpg_id: 0
 var:
   container:
diff --git a/projects/android-components/list_toolchain_updates_checks 
b/projects/android-components/list_toolchain_updates_checks
index 38ae707..d1ab7ba 100644
--- a/projects/android-components/list_toolchain_updates_checks
+++ b/projects/android-components/list_toolchain_updates_checks
@@ -8,7 +8,7 @@ if (m/compileSdkVersion:\\s+(.*)$/) {
 }
 EOF
 needed=$(cat .config.yml | perl -ne "$p")
-current=30
+current=31
 check_update_needed compileSdkVersion "$needed" "$current"
 
 
diff --git a/projects/application-services/config 
b/projects/application-services/config
index 5914ff5..0dcd74f 100644
--- a/projects/application-services/config
+++ b/projects/application-services/config
@@ -100,7 +100,7 @@ input_files:
 
 steps:
   list_toolchain_updates:
-git_hash: 'v86.0.1'
+git_hash: 'v86.2.2'
 input_files: []
 var:
   container:
diff --git a/projects/fenix/config b/projects/fenix/config
index 6f016b8..4258b90 100644
--- a/projects/fenix/config
+++ b/projects/fenix/config
@@ -59,7 +59,7 @@ input_files:
 steps:
   list_toolchain_updates:
 git_url: https://github.com/mozilla-mobile/fenix.git
-git_hash: releases_v95.0.0
+git_hash: releases_v96.0.0
 #tag_gpg_id: 0
 input_files: []
 var:
diff --git a/projects/fenix/list_toolchain_updates_checks 
b/projects/fenix/list_toolchain_updates_checks
index 50e8a92..bf4e767 100644
--- a/projects/fenix/list_toolchain_updates_checks
+++ b/projects/fenix/list_toolchain_updates_checks
@@ -32,7 +32,7 @@ if (m/const\\s+val\\s+compileSdkVersion\\s+=\\s+([^"]+)/) {
 }
 EOF
 needed=$(cat buildSrc/src/main/java/Config.kt | perl -ne "$p")
-current=30
+current=31
 check_update_needed compileSdkVersion "$needed" "$current"
 
 
diff --git a/projects/geckoview/config b/projects/geckoview/config
index 48ae2a0..4911f81 100644
--- a/projects/geckoview/config
+++ b/projects/geckoview/config
@@ -135,7 +135,7 @@ steps:
 
   list_toolchain_updates:
 git_url: https://github.com/mozilla/gecko-dev.git
-git_hash: beta
+git_hash: release
 tag_gpg_id: 0
 input_files: []
 var:



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


[tor-commits] [tor-browser-build/master] Bug 40056: Download .aar and .jar files for all .pom files

2022-02-22 Thread sysrqb
commit 5704e451c0f2282e59f30a47b0f3b96c20ded74f
Author: Nicolas Vigier 
Date:   Fri Dec 17 18:28:16 2021 +0100

Bug 40056: Download .aar and .jar files for all .pom files

The process we use to generate gradle-dependencies-list.txt files is
often missing .aar and .jar files corresponding to .pom files.
To avoid that, we can try to download .aar and .jar files for all .pom
files.
---
 projects/common/gen_gradle_deps_file.sh | 30 --
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/projects/common/gen_gradle_deps_file.sh 
b/projects/common/gen_gradle_deps_file.sh
index 3ea8f16..ea47f3e 100755
--- a/projects/common/gen_gradle_deps_file.sh
+++ b/projects/common/gen_gradle_deps_file.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # Copyright (c) 2020, The Tor Project, Inc.
 #
@@ -47,13 +47,31 @@ cat $log | grep "Performing HTTP" | grep -o "https://.*; | \
   grep -vE "\.module|maven-metadata\.xml" | sort | uniq > dl-attempts
 
 # Step 2: Fetch all the dependencies and calculate the SHA-256 sum
+declare -A URLs
+function dl_url {
+  local url="$1"
+  test -n "${URLs[$url]}" && return 0
+  URLs[$url]=1
+  wget -U "" $url
+  test $? -eq 0 || return 1
+  local fn=$(basename "$url")
+  local sha256=`sha256sum $fn | cut -d ' ' -f 1`
+  echo "$sha256 | $url" >> deps
+  rm $fn
+}
+
 while read line
 do
-  wget -U "" $line
-  fn=$(basename "$line")
-  sha256=`sha256sum $fn | cut -d ' ' -f 1`
-  echo "$sha256 | $line" >> deps
-  rm $fn
+  dl_url "$line"
+  # If we downloaded a .pom file, also try to get corresponding .jar and
+  # .aar files
+  bname=$(basename "$line" .pom)
+  dname=$(dirname "$line")
+  if test "$line" != "$dname/$bname"
+  then
+dl_url "$dname/$bname.aar"
+dl_url "$dname/$bname.jar"
+  fi
 done < dl-attempts
 
 # Step 3: Add the header at the beginning of the final dependency file.



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


[tor-commits] [tor-browser-build/master] Bug 40418: Update components for mozilla96: geckoview part

2022-02-22 Thread sysrqb
commit d5208061c55f6f987917f6a179469c4b559c8838
Author: aguestuser 
Date:   Thu Feb 10 16:57:53 2022 -0500

Bug 40418: Update components for mozilla96: geckoview part
---
 projects/geckoview/build|  2 +-
 projects/geckoview/config   |  6 ++--
 projects/geckoview/gradle-dependencies-list.txt | 37 +
 projects/llvm-project/config| 18 +---
 4 files changed, 49 insertions(+), 14 deletions(-)

diff --git a/projects/geckoview/build b/projects/geckoview/build
index 3f7264a..b83a3e3 100644
--- a/projects/geckoview/build
+++ b/projects/geckoview/build
@@ -52,7 +52,7 @@ rm -f js/src/configure
 export MACH_USE_SYSTEM_PYTHON=1
 # Create .mozbuild to avoid interactive prompt in configure
 mkdir "$HOME/.mozbuild"
-./mach configure --with-tor-browser-version=[% c("var/torbrowser_version") %]
+./mach configure --with-tor-browser-version=[% c("var/torbrowser_version") %] 
--with-java-bin-path="$JAVA_HOME/bin" --without-wasm-sandboxed-libraries
 ./mach build --verbose
 
 # We don't want to have the debug .aar but the one that has `$channel`, 
`$arch`,
diff --git a/projects/geckoview/config b/projects/geckoview/config
index 4911f81..4969ece 100644
--- a/projects/geckoview/config
+++ b/projects/geckoview/config
@@ -8,7 +8,7 @@ git_submodule: 1
 gpg_keyring: torbutton.gpg
 
 var:
-  geckoview_version: 94.0
+  geckoview_version: 96.0
   torbrowser_branch: 11.5
   copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
   deps:
@@ -23,7 +23,7 @@ var:
   container:
 use_container: 1
   # this should be updated when the list of gradle dependencies is changed
-  gradle_dependencies_version: 8
+  gradle_dependencies_version: 9
   gradle_version: 6.9.1
 
 steps:
@@ -84,7 +84,7 @@ steps:
   # Create .mozbuild to avoid interactive prompt in configure
   mkdir "$HOME/.mozbuild"
   # We still need to specify --tor-browser-version due to bug 34005.
-  ./mach configure --with-tor-browser-version=[% 
c("var/torbrowser_version") %]
+  ./mach configure --with-tor-browser-version=[% 
c("var/torbrowser_version") %] --with-java-bin-path="$JAVA_HOME/bin" 
--without-wasm-sandboxed-libraries
   ./mach build --verbose
   find obj-* -regex '.*geckoview.*[0-9].\(aar\|pom\)' -exec cp {} 
$distdir/[% project %] \;
 
diff --git a/projects/geckoview/gradle-dependencies-list.txt 
b/projects/geckoview/gradle-dependencies-list.txt
index 1a0990b..e6db32a 100644
--- a/projects/geckoview/gradle-dependencies-list.txt
+++ b/projects/geckoview/gradle-dependencies-list.txt
@@ -70,8 +70,6 @@ 
e71c328ceef5c4a7d76f2d86df1b65d65fe2acf868b1a4efd84a3f34336186d8 | https://maven
 a41f5a1f79283c5175e1bb60cf3683780f401c6a9d34fbe9751253fa6ff9 | 
https://maven.google.com/androidx/localbroadcastmanager/localbroadcastmanager/1.0.0/localbroadcastmanager-1.0.0.pom
 b23b527b2bac870c4a7451e6982d7132e413e88d7f27dbeb1fc7640a720cd9ee | 
https://maven.google.com/androidx/media/media/1.0.0/media-1.0.0.aar
 9cdfe5f7849069ad84dc4fb0407b3677fb8c22d3d66fd2b8fdb8dec8c5dc7411 | 
https://maven.google.com/androidx/media/media/1.0.0/media-1.0.0.pom
-fb8115694b1731c23c1bbb628f5baaee37a8f3b50d69a7733b55278e101e1488 | 
https://maven.google.com/androidx/multidex/multidex-instrumentation/2.0.0/multidex-instrumentation-2.0.0.aar
-5056524d08992ebe1b3654c5b0db125497b930f177fa385952450e3b74d49bf2 | 
https://maven.google.com/androidx/multidex/multidex-instrumentation/2.0.0/multidex-instrumentation-2.0.0.pom
 c01700091072e0ff5d8ec2d00eac6b8f96ea18646080425e9ce3c6a7b5f66e33 | 
https://maven.google.com/androidx/multidex/multidex/2.0.0/multidex-2.0.0.aar
 4298222d2a10cf6e82f32650b5a716a8714899f3ef7d05d58ddaafc32ae2d614 | 
https://maven.google.com/androidx/multidex/multidex/2.0.0/multidex-2.0.0.pom
 ea9fde25606eb456210ffe9f7e51048abd776b55a34c0cc6608282b5699122d1 | 
https://maven.google.com/androidx/preference/preference/1.0.0/preference-1.0.0.aar
@@ -243,11 +241,20 @@ 
fdd93302c2eb94bbe6007caa28d072246d2875cda5cb774bb6299416b94d74a6 | https://maven
 c9fff541d51c11195de305c50bbfe4d1dfc97841983d95f6d7101112603515ab | 
https://maven.google.com/com/google/android/material/material/1.0.0/material-1.0.0.pom
 2deaa8c40f27c8af158ae2c2132927cd9be345deb1450da49aca29cb168289cd | 
https://maven.google.com/com/google/testing/platform/core-proto/0.0.8-alpha01/core-proto-0.0.8-alpha01.jar
 501e7a6b743cf4e81643ce31e2850f37477494a689513e756e059c688773867f | 
https://maven.google.com/com/google/testing/platform/core-proto/0.0.8-alpha01/core-proto-0.0.8-alpha01.pom
-440a25cd719ed1c40ee48d1ec1fb8a32193e25ddd9b7fa5bbd4e252f9cf8083d | 
https://plugins.gradle.org/m2/com/koushikdutta/async/androidasync/3.1.0/androidasync-3.1.0.aar
-5d5c55f1ed2ab04d538223d23a39d78c66df4c96f87f634ad7078417b79d3372 | 
https://plugins.gradle.org/m2/com/koushikdutta/async/androidasync/3.1.0/androidasync-3.1.0.pom
-f38510e048be4795658064b8735fdfa4954e54d05af875de7edc738bba326fe4 | 

[tor-commits] [tor-browser-build/master] Bug 40418: Update components for mozilla96: glean part

2022-02-22 Thread sysrqb
commit f02775a2be95bd483817145220dee851cfc47809
Author: aguestuser 
Date:   Thu Feb 10 16:53:06 2022 -0500

Bug 40418: Update components for mozilla96: glean part
---
 projects/glean/config | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/projects/glean/config b/projects/glean/config
index cbd55e0..939ae51 100644
--- a/projects/glean/config
+++ b/projects/glean/config
@@ -21,14 +21,18 @@ var:
   glean_wheels_sha256sum:
 3.4.0: 6bbf3a9ffa939ca87e00b486f2020ab5cf9dea772f1d37b048f666fed38f98c1
 4.0.0: c974113bd8671364c592fea9b64bac660b59d4f03a7dcecd4dd4e0c355431db8
+4.2.0: 09cda9fb155e4987bdc03b702219960e9729c448146f023f8c93de57836edf31
+4.4.0: afc0eb6497413eab8e5cf95cf9bbfe4dc1cc53a208b9b66572cfde752f3023e9
   glean_wheels_url:
 3.4.0: 
https://people.torproject.org/~boklm/mirrors/sources/glean-wheels-3.4.0-build2.tar.xz
 4.0.0: 
https://people.torproject.org/~boklm/mirrors/sources/glean-wheels-4.0.0.tar.xz
+4.2.0: 
https://people.torproject.org/~pierov/tbb_files/glean-wheels-4.2.0.tar.xz
+4.4.0: 
https://people.torproject.org/~boklm/mirrors/sources/glean-wheels-4.4.0.tar.xz
 
 steps:
   create_glean_deps_tarball:
 git_url: ''
-version: 4.0.0
+version: 4.4.0
 filename: 'glean-wheels-[% c("version") %].tar.xz'
 build_log: '-'
 var:



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


[tor-commits] [tor-browser-build/master] Bug 40385: Update components for mozilla95: geckoview part

2022-02-22 Thread sysrqb
commit 715ac99cba2b9222a0380df5fcdf706b4e7ba1ad
Author: Nicolas Vigier 
Date:   Wed Nov 24 15:46:36 2021 +0100

Bug 40385: Update components for mozilla95: geckoview part
---
 projects/llvm-project/config | 4 ++--
 projects/rust/config | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/projects/llvm-project/config b/projects/llvm-project/config
index e82921e..3b99abb 100644
--- a/projects/llvm-project/config
+++ b/projects/llvm-project/config
@@ -6,5 +6,5 @@ filename: '[% project %]-[% c("version") %]-[% 
c("var/build_id") %].tar.gz'
 
 targets:
   android:
-version: 12.0.1
-git_hash: fed41342a82f5a3a9201819a82bf7a48313e296b
+version: 13.0.0
+git_hash: d7b669b3a30345cfcdb2fde2af6f48aa4b94845d
diff --git a/projects/rust/config b/projects/rust/config
index 301eef5..a202bbc 100644
--- a/projects/rust/config
+++ b/projects/rust/config
@@ -11,8 +11,8 @@ var:
 targets:
   android:
 var:
-  current_version: 1.55.0
-  previous_version: 1.54.0
+  current_version: 1.56.0
+  previous_version: 1.55.0
   arch_deps:
 - libssl-dev
 - pkg-config



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


[tor-commits] [tor-browser-build/master] Bug 40385: Update components for mozilla95: android-components

2022-02-22 Thread sysrqb
commit 1abdf5abbc2c545c46f91b413079f1a72068c265
Author: Nicolas Vigier 
Date:   Thu Nov 25 12:53:48 2021 +0100

Bug 40385: Update components for mozilla95: android-components
---
 projects/android-components/config |   2 +-
 .../gradle-dependencies-list.txt   | 293 +++--
 2 files changed, 153 insertions(+), 142 deletions(-)

diff --git a/projects/android-components/config 
b/projects/android-components/config
index 128cea5..47928c2 100644
--- a/projects/android-components/config
+++ b/projects/android-components/config
@@ -8,7 +8,7 @@ gpg_keyring: torbutton.gpg
 variant: '[% IF c("var/release") %]Release[% ELSE %]Beta[% END %]'
 
 var:
-  android_components_version: 94.0.12
+  android_components_version: 95.0.10
   torbrowser_branch: 11.5
   container:
 use_container: 1
diff --git a/projects/android-components/gradle-dependencies-list.txt 
b/projects/android-components/gradle-dependencies-list.txt
index 88e9a94..7dd915e 100644
--- a/projects/android-components/gradle-dependencies-list.txt
+++ b/projects/android-components/gradle-dependencies-list.txt
@@ -1,18 +1,18 @@
 # On how to update dependencies see 
doc/how-to-create-gradle-dependencies-list.txt
 # Don't forget to update var/gradle_dependencies_version when modifying this 
file
 sha256sum | url
-32b2cdbb3ffb514bb4e09d00a7b4ccacf1dbb78a4a16fad0a600cf1c37204382 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-compose/1.3.0/activity-compose-1.3.0.aar
-7c500d944b123d99f45768f0b2caad7ca948ceef687dc4436d65edc16494b759 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-compose/1.3.0/activity-compose-1.3.0.pom
+1ca65cbf8948ef3d82dfe70fbf2b2f6805b88dbe7385c67757d601bd5068523c | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-compose/1.3.1/activity-compose-1.3.1.aar
+09c1c387dfdcb2252ba95c032ad66929115c7e82805d9fbe9653114bc6aa5d9d | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-compose/1.3.1/activity-compose-1.3.1.pom
 1996c36d3d2d62db5020b8ec634b5f854b1a698960c3552e1a00c69221baeabe | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-ktx/1.1.0/activity-ktx-1.1.0.aar
 87ff101e17596b8200e4acd9bd4a9d9688514dcf279b7c8cadcf569a63c9707f | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-ktx/1.1.0/activity-ktx-1.1.0.pom
-675df62188fa9dc2f470ace72a00ccd154472e26efb6137bff4adc34ce670f18 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-ktx/1.3.0/activity-ktx-1.3.0.aar
-6fba3fae61c0c23ec64d5c0ecf514c7fec786e09c5d60a8eb464e0c4b1a7 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-ktx/1.3.0/activity-ktx-1.3.0.pom
+9adc905de021afe039e4107a49c0bead35661c69a8a8086af448d01ecd5d6130 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-ktx/1.3.1/activity-ktx-1.3.1.aar
+3de7a39b56272ee215f7a2b612a1a06d063a2eb5cd00599967f87731e3ffa8a2 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity-ktx/1.3.1/activity-ktx-1.3.1.pom
 3690001fc5a57ad176cacf7a13f56219bffb73b93c7978dbac1e1e5db082d6c0 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.1.0/activity-1.1.0.pom
 c0b58996a4cd97182dfe2a38f0c930a2fc98b05d5946e012c521734b39ec5017 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.2.2/activity-1.2.2.pom
 1dce0705c334a6b2ef03382418dc7586f4e57ee23817267b403ea8cfc36c824e | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.2.3/activity-1.2.3.aar
 bcaddc925d51d5566c45a4a6cf3bf05c7144a634871308d0e73d3e2703ad74e0 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.2.3/activity-1.2.3.pom
-db584d89011a078829209d24157b3256ca8985b1c6c000204eebe9973a7d09da | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.3.0/activity-1.3.0.aar
-281b40bc5b5a0e457716156e5dfdcae81ca0640c78d077a73416e929dc056bdc | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.3.0/activity-1.3.0.pom
+6006f41c11e6ea41e7109a70c1db361735b12a9005dd0a6f7c18c3697a9c8b34 | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.3.1/activity-1.3.1.aar
+ad002bf2b7834b2db9d95b6feb63a134669607f724ef100bca2d3b0db0893c7f | 
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.3.1/activity-1.3.1.pom
 b219d2b568e7e4ba534e09f8c2fd242343df6ccbdfbbe938846f5d740e6b0b11 | 
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation-experimental/1.0.0/annotation-experimental-1.0.0.aar
 6b73ff6608f4b1d6cbab620b65708a382d0b39901cf4e6b0d16f84a1b04d7732 | 
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation-experimental/1.0.0/annotation-experimental-1.0.0.pom
 0157de61a2064047896a058080f3fd67ba57ad9a94857b3f7a363660243e3f90 | 
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation-experimental/1.1.0/annotation-experimental-1.1.0.aar
@@ -42,6 +42,8 @@ 

[tor-commits] [tor-browser-build/master] Bug 40385: Add android platform-31_r01

2022-02-22 Thread sysrqb
commit d0f30e3d203365e4279f8d1f89205c570f6c5a9e
Author: Nicolas Vigier 
Date:   Thu Nov 25 13:39:18 2021 +0100

Bug 40385: Add android platform-31_r01
---
 projects/android-toolchain/build  | 20 +---
 projects/android-toolchain/config | 15 ---
 2 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/projects/android-toolchain/build b/projects/android-toolchain/build
index 6fa7794..ab47fb3 100644
--- a/projects/android-toolchain/build
+++ b/projects/android-toolchain/build
@@ -3,9 +3,6 @@
 export PROJECT_PATH=/var/tmp/dist/[% project %]
 export SDK_HOME=$PROJECT_PATH/android-sdk-linux
 export NDK_HOME=$SDK_HOME/ndk
-android_release_dir_9=android-9
-android_release_dir_10=android-10
-android_release_dir_11=android-11
 
 # Make directories
 mkdir -p $NDK_HOME $SDK_HOME
@@ -31,26 +28,30 @@ done
 cd $SDK_HOME
 unzip -qq $HOME/[% c("input_files_by_name/build_tools") %] -d $SDK_HOME
 mkdir -p build-tools/[% c("var/version_30") %]
-mv $android_release_dir_11/* build-tools/[% c("var/version_30") %]
+mv [% c("var/android_release_dir_30") %]/* build-tools/[% c("var/version_30") 
%]
 
 unzip -qq $HOME/[% c("input_files_by_name/platform") %] -d $SDK_HOME
 mkdir -p platforms/android-[% c("var/android_api_level") %]
-mv $android_release_dir_11/* platforms/android-[% c("var/android_api_level") %]
+mv [% c("var/android_release_dir") %]/* platforms/android-[% 
c("var/android_api_level") %]
 
 # Apart from GeckoView all other projects do still need build-tools 28.0.3 as
 # they are using the Gradle plugin 3.2.1 - 3.6.0 without specifying
 # `buildToolsVersion`.
 unzip -qq $HOME/[% c("input_files_by_name/build_tools_28") %] -d $SDK_HOME
 mkdir -p build-tools/[% c("var/version_28") %]
-mv $android_release_dir_9/* build-tools/[% c("var/version_28") %]
+mv [% c("var/android_release_dir_28") %]/* build-tools/[% c("var/version_28") 
%]
 
 unzip -qq $HOME/[% c("input_files_by_name/build_tools_29") %] -d $SDK_HOME
 mkdir -p build-tools/[% c("var/version_29") %]
-mv $android_release_dir_10/* build-tools/[% c("var/version_29") %]
+mv [% c("var/android_release_dir_29") %]/* build-tools/[% c("var/version_29") 
%]
+
+unzip -qq $HOME/[% c("input_files_by_name/platform_30") %] -d $SDK_HOME
+mkdir -p platforms/android-[% c("var/android_api_level_30") %]
+mv [% c("var/android_release_dir_30") %]/* platforms/android-[% 
c("var/android_api_level_30") %]
 
 unzip -qq $HOME/[% c("input_files_by_name/platform_29") %] -d $SDK_HOME
 mkdir -p platforms/android-[% c("var/android_api_level_29") %]
-mv $android_release_dir_10/* platforms/android-[% 
c("var/android_api_level_29") %]
+mv [% c("var/android_release_dir_29") %]/* platforms/android-[% 
c("var/android_api_level_29") %]
 
 unzip -qq $HOME/[% c("input_files_by_name/platform_tools") %] -d $SDK_HOME
 
@@ -59,9 +60,6 @@ unzip -qq $HOME/[% c("input_files_by_name/platform_tools") %] 
-d $SDK_HOME
 mkdir emulator
 cp tools/emulator emulator/
 
-# Cleanup
-rm -fR $android_release_dir_9 $android_release_dir_10 $android_release_dir_11
-
 # Archive dist directory
 cd /var/tmp/dist
 [% c('tar', {
diff --git a/projects/android-toolchain/config 
b/projects/android-toolchain/config
index 47108de..a964f7d 100644
--- a/projects/android-toolchain/config
+++ b/projects/android-toolchain/config
@@ -26,10 +26,16 @@ var:
 export 
PATH=$PATH:$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$GRADLE_HOME/gradle/bin
 mkdir -p "$GRADLE_HOME"
   google_repo: https://dl.google.com/android/repository
-  android_api_level: 30
-  android_platform_revision: 03
+  android_api_level: 31
+  android_platform_revision: 01
+  android_release_dir: android-12
+  android_api_level_30: 30
+  android_platform_revision_30: 03
+  android_release_dir_30: android-11
   android_api_level_29: 29
   android_platform_revision_29: 04
+  android_release_dir_29: android-10
+  android_release_dir_28: android-9
   android_ndk_version: 21
   android_ndk_revision: d
   android_ndk_version_build: 21.3.6528147
@@ -54,9 +60,12 @@ input_files:
   - URL: '[% c("var/google_repo") %]/platform-[% c("var/android_api_level_29") 
%]_r[% c("var/android_platform_revision_29") %].zip'
 name: platform_29
 sha256sum: c9eaf2ce4e8fa6f5a8036bd3c95363d003733bf0a1bd349718cadf802db44c69
+  - URL: '[% c("var/google_repo") %]/platform-[% c("var/android_api_level_30") 
%]_r[% c("var/android_platform_revision_30") %].zip'
+name: platform_30
+sha256sum: f3f5b75744dbf6ee6ed3e8174a71e513bfee502d0bc3463ea97e517bff68d84e
   - URL: '[% c("var/google_repo") %]/platform-[% c("var/android_api_level") 
%]_r[% c("var/android_platform_revision") %].zip'
 name: platform
-sha256sum: f3f5b75744dbf6ee6ed3e8174a71e513bfee502d0bc3463ea97e517bff68d84e
+sha256sum: 1d69fe1d7f9788d82ff3a374faf4f6ccc9d1d372aa84a86b5bcfb517523b0b3f
   # ./mach bootstrap is fetching the latest version, so it does not seem to
   # matter which particular version we are using. Pin to the one fitting best 
to
   # SDK 

[tor-commits] [tor-browser-build/master] Bug 40385: Update components for mozilla95: application-services part

2022-02-22 Thread sysrqb
commit 8bed314368a0004276cab4279467e0f2767ad47b
Author: Nicolas Vigier 
Date:   Thu Nov 25 09:40:44 2021 +0100

Bug 40385: Update components for mozilla95: application-services part
---
 projects/application-services/config | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/projects/application-services/config 
b/projects/application-services/config
index 857f4e3..5914ff5 100644
--- a/projects/application-services/config
+++ b/projects/application-services/config
@@ -1,7 +1,7 @@
 # vim: filetype=yaml sw=2
 filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
-version: 85.4.0
-git_hash: b9601a76c7d47aa54c60b81c783571630d4962bf
+version: 86.0.1
+git_hash: 63f11a6879d43acda9c9de4f74a537b338e306ab
 git_url: https://github.com/mozilla/application-services
 git_submodule: 1
 
@@ -91,7 +91,7 @@ input_files:
 enable: '[% !c("var/fetch_gradle_dependencies") %]'
   # Use `make cargo_vendor-application-services` to re-generate the vendor 
tarball
   - URL: 
https://people.torproject.org/~boklm/mirrors/sources/application-services-vendor-[%
 c('version') %].tar.bz2
-sha256sum: 54f9c8185789ab45cd46e9845a71181c5e7938e26b1b33b3f2f891f0b5cf73b6
+sha256sum: 0b4136ac67083801a758cb87ba2eb8744d471c42b1ed28fc33517227b4224f80
   - filename: no-git.patch
   - filename: mavenLocal.patch
 enable: '[% !c("var/fetch_gradle_dependencies") %]'



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


[tor-commits] [tor-browser-build/master] Bug 40384: Make the list of components updates for switch to mozilla95-based Fenix

2022-02-22 Thread sysrqb
commit a1a9ab83a692bb5f1f196ecb8ab7b20df4e9ef9e
Author: Nicolas Vigier 
Date:   Wed Nov 24 14:53:44 2021 +0100

Bug 40384: Make the list of components updates for switch to 
mozilla95-based Fenix
---
 projects/android-components/config   |  2 +-
 projects/application-services/config |  2 +-
 projects/fenix/config|  2 +-
 projects/geckoview/config|  2 +-
 projects/geckoview/list_toolchain_updates_checks | 18 ++
 5 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/projects/android-components/config 
b/projects/android-components/config
index 11b7413..128cea5 100644
--- a/projects/android-components/config
+++ b/projects/android-components/config
@@ -58,7 +58,7 @@ input_files:
 steps:
   list_toolchain_updates:
 git_url: https://github.com/mozilla-mobile/android-components.git
-git_hash: releases/94.0
+git_hash: releases/95.0
 #tag_gpg_id: 0
 var:
   container:
diff --git a/projects/application-services/config 
b/projects/application-services/config
index 2f90643..857f4e3 100644
--- a/projects/application-services/config
+++ b/projects/application-services/config
@@ -100,7 +100,7 @@ input_files:
 
 steps:
   list_toolchain_updates:
-git_hash: 'v85.4.0'
+git_hash: 'v86.0.1'
 input_files: []
 var:
   container:
diff --git a/projects/fenix/config b/projects/fenix/config
index e190b74..6f016b8 100644
--- a/projects/fenix/config
+++ b/projects/fenix/config
@@ -59,7 +59,7 @@ input_files:
 steps:
   list_toolchain_updates:
 git_url: https://github.com/mozilla-mobile/fenix.git
-git_hash: releases_v94.0.0
+git_hash: releases_v95.0.0
 #tag_gpg_id: 0
 input_files: []
 var:
diff --git a/projects/geckoview/config b/projects/geckoview/config
index 4911f81..48ae2a0 100644
--- a/projects/geckoview/config
+++ b/projects/geckoview/config
@@ -135,7 +135,7 @@ steps:
 
   list_toolchain_updates:
 git_url: https://github.com/mozilla/gecko-dev.git
-git_hash: release
+git_hash: beta
 tag_gpg_id: 0
 input_files: []
 var:
diff --git a/projects/geckoview/list_toolchain_updates_checks 
b/projects/geckoview/list_toolchain_updates_checks
index 1e55f83..1622b19 100644
--- a/projects/geckoview/list_toolchain_updates_checks
+++ b/projects/geckoview/list_toolchain_updates_checks
@@ -167,20 +167,30 @@ my $d = 
YAML::XS::LoadFile('taskcluster/ci/toolchain/clang.yml');
 my $clang_toolchain;
 foreach my $t (keys %$d) {
   if ($d->{$t}{run}{'toolchain-alias'} eq 'linux64-clang-android-cross') {
-foreach my $fetch (@{$d->{$t}{fetches}{fetch}}) {
-  $clang_toolchain = $fetch if $fetch =~ m/^clang-.*/;
+foreach my $fetch (@{$d->{$t}{fetches}{toolchain}}) {
+  $clang_toolchain = $fetch if $fetch =~ m/^.*-clang-.*/;
 }
 last;
   }
 }
 
 if (!$clang_toolchain) {
-  print STDERR "Error: could not find clang toolchain";
+  print STDERR "Error: could not find clang toolchain\\n";
+  exit 1;
+}
+
+my $clang_fetch;
+foreach my $fetch (@{$d->{$clang_toolchain}{fetches}{fetch}}) {
+  $clang_fetch = $fetch if $fetch =~ m/^clang-.*/;
+}
+
+if (!$clang_fetch) {
+  print STDERR "Error: could not find clang fetch\\n";
   exit 1;
 }
 
 my $fetch = YAML::XS::LoadFile('taskcluster/ci/fetch/toolchains.yml');
-print $fetch->{$clang_toolchain}{fetch}{revision};
+print $fetch->{$clang_fetch}{fetch}{revision};
 EOF
 needed=$(perl -MYAML::XS -e "$p")
 current='[% pc("llvm-project", "git_hash") %]'



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


[tor-commits] [translation/support-portal] new translations in support-portal

2022-02-22 Thread translation
commit b73fa4a5495b337ea6c09d35779f0033e1db72f3
Author: Translation commit bot 
Date:   Tue Feb 22 17:47:54 2022 +

new translations in support-portal
---
 contents+de.po | 10 +++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/contents+de.po b/contents+de.po
index cfb60f4562..b7a2485b01 100644
--- a/contents+de.po
+++ b/contents+de.po
@@ -18,9 +18,9 @@
 # Philipp . , 2021
 # erinm, 2021
 # Ettore Atalan , 2021
-# Emma Peel, 2022
 # Transifex Bot <>, 2022
 # Curtis Baltimore , 2022
+# Emma Peel, 2022
 # 
 msgid ""
 msgstr ""
@@ -28,7 +28,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2022-02-19 08:39+UTC\n"
 "PO-Revision-Date: 2018-10-02 22:41+\n"
-"Last-Translator: Curtis Baltimore , 2022\n"
+"Last-Translator: Emma Peel, 2022\n"
 "Language-Team: German (https://www.transifex.com/otf/teams/1519/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -9068,6 +9068,10 @@ msgid ""
 "[get...@torproject.org](mailto:get...@torproject.org) with the subject "
 "\"windows zh-cn\" or other operating system (linux or macos)."
 msgstr ""
+"Besorge dir zuerst eine aktualisierte Version des Tor Browser: schicke eine "
+"E-Mail an [get...@torproject.org](mailto:get...@torproject.org) mit dem "
+"Betreff \"windows zh-cn\" oder ein anderes Betriebssystem (Linux oder "
+"MacOS)."
 
 #: https//support.torproject.org/censorship/connecting-from-china/
 #: 
(content/censorship/connecting-from-china/contents+en.lrquestion.description)
@@ -14949,7 +14953,7 @@ msgstr ""
 #: https//support.torproject.org/get-in-touch/irc-help/
 #: (content/get-in-touch/irc-help/contents+en.lrquestion.description)
 msgid "### OFTC IRC network"
-msgstr ""
+msgstr "### OFTC IRC-Netzwerk"
 
 #: https//support.torproject.org/get-in-touch/irc-help/
 #: (content/get-in-touch/irc-help/contents+en.lrquestion.description)

___
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] new translations in tor-launcher-network-settings

2022-02-22 Thread translation
commit 1d9abfd30f8cd42f42695b1ba9bf02271a46
Author: Translation commit bot 
Date:   Tue Feb 22 17:47:43 2022 +

new translations in tor-launcher-network-settings
---
 de/network-settings.dtd | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/de/network-settings.dtd b/de/network-settings.dtd
index 2942d6aa88..61e820dea1 100644
--- a/de/network-settings.dtd
+++ b/de/network-settings.dtd
@@ -92,7 +92,7 @@
 
 
 
-
+
 
 
 

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


[tor-commits] [translation/communitytpo-contentspot] new translations in communitytpo-contentspot

2022-02-22 Thread translation
commit 3fe728e55eb612d59e2dd79f8f2d082c3294b5b6
Author: Translation commit bot 
Date:   Tue Feb 22 17:45:11 2022 +

new translations in communitytpo-contentspot
---
 contents+de.po | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/contents+de.po b/contents+de.po
index 21304b194a..d3afc6 100644
--- a/contents+de.po
+++ b/contents+de.po
@@ -12146,7 +12146,7 @@ msgstr ""
 #: https//community.torproject.org/relay/community-resources/good-bad-isps/
 #: (content/relay/community-resources/good-bad-isps/contents+en.lrpage.body)
 msgid "* Frantech / Ponynet (AS53667)"
-msgstr ""
+msgstr "* Frantech / Ponynet (AS53667)"
 
 #: https//community.torproject.org/relay/community-resources/good-bad-isps/
 #: (content/relay/community-resources/good-bad-isps/contents+en.lrpage.body)

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


[tor-commits] [tor-browser-build/master] Merge branch 'bug_40435' into 'master'

2022-02-22 Thread richard
commit d5a045b154a0c3be84f43e9fcdd41f025878fe72
Merge: f78de76 7789cee
Author: Richard Pospesel 
Date:   Tue Feb 22 16:27:26 2022 +

Merge branch 'bug_40435' into 'master'

Bug 40435: Remove default obfs4 bridge "deusexmachina"

Closes #40435

See merge request tpo/applications/tor-browser-build!412

 projects/tor-browser/Bundle-Data/PTConfigs/bridge_prefs.js | 1 -
 1 file changed, 1 deletion(-)

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


[tor-commits] [translation/tails-misc_release] new translations in tails-misc_release

2022-02-22 Thread translation
commit d75853be608437c9966084cfa416977a241edd14
Author: Translation commit bot 
Date:   Tue Feb 22 11:46:31 2022 +

new translations in tails-misc_release
---
 es.po | 34 +-
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/es.po b/es.po
index f54336d41d..de3b1aea65 100644
--- a/es.po
+++ b/es.po
@@ -8,7 +8,7 @@
 # Edward Navarro, 2015
 # vareli , 2020
 # el buve, 2015
-# Emma Peel, 2015,2017-2021
+# Emma Peel, 2015,2017-2022
 # ErigamerP , 2021
 # eulalio barbero espinosa , 2018-2022
 # Joaquín Serna , 2019,2021
@@ -22,7 +22,7 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2022-02-07 10:07+0100\n"
-"PO-Revision-Date: 2022-02-22 11:40+\n"
+"PO-Revision-Date: 2022-02-22 11:44+\n"
 "Last-Translator: Emma Peel\n"
 "Language-Team: Spanish 
(http://www.transifex.com/otf/torproject/language/es/)\n"
 "MIME-Version: 1.0\n"
@@ -2022,11 +2022,11 @@ msgstr ""
 
 #: config/chroot_local-includes/usr/local/sbin/unsafe-browser:62
 msgid "_Close"
-msgstr ""
+msgstr "_Cerrar"
 
 #: config/chroot_local-includes/usr/local/sbin/unsafe-browser:67
 msgid "Failed to restart the system."
-msgstr ""
+msgstr "Fallo al reiniciar el sistema."
 
 #: config/chroot_local-includes/usr/local/sbin/unsafe-browser:77
 msgid "Starting the Unsafe Browser..."
@@ -2671,11 +2671,11 @@ msgstr ""
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:628
 msgid "Your clock and time zone need to be correct to connect to Tor."
-msgstr ""
+msgstr "Tu zona horaria y la hora han de ser correctas para conectar a Tor."
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:641
 msgid "Fix _Clock"
-msgstr ""
+msgstr "Arreglar _Reloj"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:678
 msgid "• Public network"
@@ -2689,7 +2689,7 @@ msgstr "Si estás en una tienda, hotel o aeropuerto, 
puede que necesites iniciar
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:711
 msgid "Try _Signing in to the Network"
-msgstr ""
+msgstr "Intenta _Iniciar sesión en la Red"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:749
 msgid "• Local proxy"
@@ -2703,11 +2703,11 @@ msgstr "Si estas en una red de empresa o universtiaria, 
puede que necesites conf
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:782
 msgid "Configure a Local _Proxy"
-msgstr ""
+msgstr "Configurar un _Proxy local"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:820
 msgid "• Bridge over email"
-msgstr ""
+msgstr "• Puente por correo electrónico"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:840
 msgid ""
@@ -2722,7 +2722,7 @@ msgstr ""
 msgid ""
 "Troubleshooting "
 "connecting to Tor"
-msgstr ""
+msgstr "Solución de 
problemas de conexión a Tor"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:996
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:1404
@@ -2756,7 +2756,7 @@ msgstr "Tails intentará diferentes formas de conectarse 
a Tor hasta que tenga 
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:1148
 msgid "Configure a Tor _bridge"
-msgstr ""
+msgstr "Configurar un _puente de Tor"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:1194
 msgid ""
@@ -2902,30 +2902,30 @@ msgstr "_Guardar configuración de proxy"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/time-dialog.ui.in:7
 msgid "Tor Connection - Fix Clock"
-msgstr ""
+msgstr "Conexión a Tor - establecer hora"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/time-dialog.ui.in:76
 msgid ""
 "Your time zone cannot be used to identify or locate you. Your time zone will"
 " never be sent over the network and will only be used to fix your clock and "
 "connect to Tor."
-msgstr ""
+msgstr "No se puede usar tu zona horaria para identificarte o localizarte. Tu 
zona horaria nunca se enviará por la red y sólo se utilizará para fijar tu 
reloj y conectarse a Tor."
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/time-dialog.ui.in:142
 msgid "Time zone"
-msgstr ""
+msgstr "Huso horario"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/time-dialog.ui.in:186
 msgid "Time"
-msgstr ""
+msgstr "Hora"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/time-dialog.ui.in:223
 msgid ":"
-msgstr ""
+msgstr ":"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/time-dialog.ui.in:277
 msgid "Date"
-msgstr ""
+msgstr "Fecha"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/time-dialog.ui.in:311
 msgid "January"

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


[tor-commits] [translation/tails-misc] new translations in tails-misc

2022-02-22 Thread translation
commit d03778b61bdc19293364e4ebcd9c0812090e4b53
Author: Translation commit bot 
Date:   Tue Feb 22 11:45:45 2022 +

new translations in tails-misc
---
 es.po | 26 +-
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/es.po b/es.po
index 1a7d3de91f..7417d1cf70 100644
--- a/es.po
+++ b/es.po
@@ -8,7 +8,7 @@
 # Edward Navarro, 2015
 # vareli , 2020
 # el buve, 2015
-# Emma Peel, 2015,2017-2021
+# Emma Peel, 2015,2017-2022
 # ErigamerP , 2021
 # eulalio barbero espinosa , 2018-2022
 # Joaquín Serna , 2019,2021
@@ -22,8 +22,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2022-02-07 10:07+0100\n"
-"PO-Revision-Date: 2022-02-07 13:55+\n"
-"Last-Translator: eulalio barbero espinosa \n"
+"PO-Revision-Date: 2022-02-22 11:44+\n"
+"Last-Translator: Emma Peel\n"
 "Language-Team: Spanish 
(http://www.transifex.com/otf/torproject/language/es/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -1743,7 +1743,7 @@ msgstr "Necesitas configurar un puente obfs4 para ocultar 
que estás usando Tor"
 
 #: 
config/chroot_local-includes/usr/lib/python3/dist-packages/tca/ui/main_window.py:326
 msgid "Failed to configure your Persistent Storage"
-msgstr "Falló la configuración de tu Almacenamiento Persistente"
+msgstr "No se ha podido configurar tu Almacenamiento Persistente"
 
 #: 
config/chroot_local-includes/usr/lib/python3/dist-packages/tca/ui/main_window.py:420
 msgid "Connecting to Tor without bridges…"
@@ -2008,7 +2008,7 @@ msgid ""
 
"href='file:///usr/share/doc/tails/website/doc/anonymous_internet/unsafe_browser.en.html#use'>use"
 " the Unsafe Browser, restart Tails and enable the Unsafe Browser in the "
 "additional settings of the Welcome Screen."
-msgstr "El Navegador Inseguro no fue habilitado en la Pantalla de Bienvenida, 
-acreen.\\n\\nTo usar
 el Navegador Inseguro, reinicia Tails y activa el navegador inseguro en la 
configuración adicional de la pantalla de bienvenida."
+msgstr "El Navegador Inseguro no fue habilitado en la Pantalla de 
Bienvenida.\\n\\nPara usar
 el Navegador Inseguro, reinicia Tails y activa el navegador inseguro en la 
configuración adicional de la pantalla de bienvenida."
 
 #: config/chroot_local-includes/usr/local/sbin/unsafe-browser:58
 msgid ""
@@ -2215,7 +2215,7 @@ msgstr "Es imposible conectar a Tor en el modo sin 
conexión"
 #: config/chroot_local-includes/usr/local/bin/tca:158
 msgid ""
 "To connect to Tor and the Internet, restart Tails without Offline Mode."
-msgstr "Para conectar a Tor e Internet, reinicie Tails sin utilizar el modo 
sin conexión."
+msgstr "Para conectar a Tor e Internet, reinicia Tails sin utilizar el modo 
sin conexión."
 
 #: 
../config/chroot_local-includes/etc/skel/Desktop/Report_an_error.desktop.in.h:1
 msgid "Report an error"
@@ -2612,7 +2612,7 @@ msgstr "Aprende 
más sobre los puentes To
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:146
 msgid "Use a _default bridge"
-msgstr "Usa un puente por _definición"
+msgstr "Usa un puente por _defecto"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:170
 msgid "obfs4 (recommended)"
@@ -2629,11 +2629,11 @@ msgstr "Ninguno"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:225
 msgid "_Request a new bridge"
-msgstr "-Solicita un nuevo puente"
+msgstr "_Solicita un nuevo puente"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:260
 msgid "_Enter a bridge that you already know"
-msgstr "_Introduce un puente que conozcas ya"
+msgstr "_Introduce un puente que ya conoces"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:283
 msgid ""
@@ -2667,7 +2667,7 @@ msgstr "Error de conexión a Tor"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:608
 msgid "• Wrong clock"
-msgstr "- Reloj equivocado"
+msgstr "• Reloj equivocado"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:628
 msgid "Your clock and time zone need to be correct to connect to Tor."
@@ -2675,7 +2675,7 @@ msgstr "Tu zona horaria y la hora han de ser correctas 
para conectar a Tor."
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:641
 msgid "Fix _Clock"
-msgstr "Fijar _Reloj"
+msgstr "Arreglar _Reloj"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:678
 msgid "• Public network"
@@ -2767,7 +2767,7 @@ msgstr "Los puentes Tor son repetidores de Tor secretos. 
Usa un puente como tu p
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:1236
 msgid "_Hide to my local network that I'm connecting to Tor (safer)"
-msgstr "Esconder a mi red local que estoy conectandome a Tor (más 
seguro)"
+msgstr "Esconder de mi red local que estoy conectándome a Tor (más 
seguro)"
 
 #: ../config/chroot_local-includes/usr/share/tails/tca/main.ui.in:1286
 msgid ""
@@ -2977,4 +2977,4 @@ msgstr "Diciembre"
 
 #: 

[tor-commits] [translation/tor-launcher-network-settings_completed] new translations in tor-launcher-network-settings_completed

2022-02-22 Thread translation
commit 379f961d3e9a7271de77955653c2b40035b498e9
Author: Translation commit bot 
Date:   Tue Feb 22 11:41:42 2022 +

new translations in tor-launcher-network-settings_completed
---
 es-ES/network-settings.dtd | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/es-ES/network-settings.dtd b/es-ES/network-settings.dtd
index 48851964bc..34c009e234 100644
--- a/es-ES/network-settings.dtd
+++ b/es-ES/network-settings.dtd
@@ -88,7 +88,7 @@
 
 
 
-
+
 
 
 

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


[tor-commits] [translation/tails-misc_release] new translations in tails-misc_release

2022-02-22 Thread translation
commit f2e19d8a9f71357412aa01231d3f51f489364006
Author: Translation commit bot 
Date:   Tue Feb 22 11:40:29 2022 +

new translations in tails-misc_release
---
 es.po | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/es.po b/es.po
index f0ad23b995..f54336d41d 100644
--- a/es.po
+++ b/es.po
@@ -22,8 +22,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2022-02-07 10:07+0100\n"
-"PO-Revision-Date: 2022-02-07 13:55+\n"
-"Last-Translator: eulalio barbero espinosa \n"
+"PO-Revision-Date: 2022-02-22 11:40+\n"
+"Last-Translator: Emma Peel\n"
 "Language-Team: Spanish 
(http://www.transifex.com/otf/torproject/language/es/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -698,7 +698,7 @@ msgstr "Entrando dispositivo_desmontado para \"%(device)s\""
 #: 
config/chroot_local-includes/usr/lib/python3/dist-packages/tails_installer/creator.py:670
 #, python-format
 msgid "Unmounting mounted filesystems on \"%(device)s\""
-msgstr ""
+msgstr "Desmontando los sistemas de archivos montados en \"%(device)s\""
 
 #: 
config/chroot_local-includes/usr/lib/python3/dist-packages/tails_installer/creator.py:674
 #, python-format

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


[tor-commits] [translation/fenix-torbrowserstringsxml_completed] new translations in fenix-torbrowserstringsxml_completed

2022-02-22 Thread translation
commit 81ca2e3084b43f893f99b3f351866462554d8577
Author: Translation commit bot 
Date:   Tue Feb 22 11:34:28 2022 +

new translations in fenix-torbrowserstringsxml_completed
---
 ca/torbrowser_strings.xml | 4 
 en-US/torbrowser_strings.xml  | 4 
 en/torbrowser_strings.xml | 4 
 es-rAR/torbrowser_strings.xml | 4 
 es-rES/torbrowser_strings.xml | 3 +--
 fr/torbrowser_strings.xml | 4 
 hr/torbrowser_strings.xml | 4 
 hu/torbrowser_strings.xml | 4 
 iw/torbrowser_strings.xml | 1 -
 mk/torbrowser_strings.xml | 4 
 sv-rSE/torbrowser_strings.xml | 4 
 tr/torbrowser_strings.xml | 4 
 zh-rCN/torbrowser_strings.xml | 4 
 13 files changed, 1 insertion(+), 47 deletions(-)

diff --git a/ca/torbrowser_strings.xml b/ca/torbrowser_strings.xml
index 93c304c549..6d8b230b55 100644
--- a/ca/torbrowser_strings.xml
+++ b/ca/torbrowser_strings.xml
@@ -72,8 +72,4 @@
 
 
 Demana versions en anglès dels llocs web 
per a una privadesa millorada
-
-Useu una màscara, useu Tor.
-Resistiu la pandèmia de la vigilà
ncia.
-La vostra donació serà igualada pels 
Amics de Tor.
 
diff --git a/en-US/torbrowser_strings.xml b/en-US/torbrowser_strings.xml
index 31c2624453..8b41c67f45 100644
--- a/en-US/torbrowser_strings.xml
+++ b/en-US/torbrowser_strings.xml
@@ -72,8 +72,4 @@
 
 
 Request English versions of web pages for 
enhanced privacy
-
-Use a mask, use Tor.
-Resist the surveillance 
pandemic.
-Your donation will be matched by Friends 
of Tor.
 
diff --git a/en/torbrowser_strings.xml b/en/torbrowser_strings.xml
index 31c2624453..8b41c67f45 100644
--- a/en/torbrowser_strings.xml
+++ b/en/torbrowser_strings.xml
@@ -72,8 +72,4 @@
 
 
 Request English versions of web pages for 
enhanced privacy
-
-Use a mask, use Tor.
-Resist the surveillance 
pandemic.
-Your donation will be matched by Friends 
of Tor.
 
diff --git a/es-rAR/torbrowser_strings.xml b/es-rAR/torbrowser_strings.xml
index ba8e62fe1f..4cb81353bd 100644
--- a/es-rAR/torbrowser_strings.xml
+++ b/es-rAR/torbrowser_strings.xml
@@ -72,8 +72,4 @@
 
 
 Solicitar las versiones en inglés de 
páginas web para una privacidad aumentada
-
-Usá un tapaboca, usá Tor.
-Resistí a la pandemia de 
vigilancia.
-Tu donación va a ser igualada por Amigos 
de Tor.
 
diff --git a/es-rES/torbrowser_strings.xml b/es-rES/torbrowser_strings.xml
index 892312c7ed..79705ec5b7 100644
--- a/es-rES/torbrowser_strings.xml
+++ b/es-rES/torbrowser_strings.xml
@@ -72,5 +72,4 @@
 
 
 Solicitar las versiones en inglés de 
páginas web para una privacidad aumentada
-
-
+
diff --git a/fr/torbrowser_strings.xml b/fr/torbrowser_strings.xml
index 67edad06f7..31b6ea74ee 100644
--- a/fr/torbrowser_strings.xml
+++ b/fr/torbrowser_strings.xml
@@ -72,8 +72,4 @@
 
 
 Pour une confidentialité accrue, 
demander la version anglaise des pages Web.
-
-Utilisez un masque, utilisez 
Tor.
-Résistez à la pandémie de 
surveillance.
-Votre don sera égalé par les Amis de 
Tor.
 
diff --git a/hr/torbrowser_strings.xml b/hr/torbrowser_strings.xml
index 0ed94ec076..7dcc2aa211 100644
--- a/hr/torbrowser_strings.xml
+++ b/hr/torbrowser_strings.xml
@@ -72,8 +72,4 @@
 
 
 Zatraži englesku verziju web-stranica za 
bolju privatnost
-
-Koristi masku, koristi Tor.
-Odupri se pandemiji nadzora.
-Iznos tvoje donacije će uplatiti i 
prijatelji Tora.
 
diff --git a/hu/torbrowser_strings.xml b/hu/torbrowser_strings.xml
index 110c07e793..ba656fc758 100644
--- a/hu/torbrowser_strings.xml
+++ b/hu/torbrowser_strings.xml
@@ -72,8 +72,4 @@
 
 
 Igényelje az angol verzióját a 
weboldalaknak a kibővített biztonságért
-
-Használjon maszkot, használjon 
Tor-t.
-Álljon ellen a lehallgatási 
pandémiának.
-A támogatásával egyező összeget ad a 
Friends of Tor.
 
diff --git a/iw/torbrowser_strings.xml b/iw/torbrowser_strings.xml
index aa44bb2a98..a6a3c2437d 100644
--- a/iw/torbrowser_strings.xml
+++ b/iw/torbrowser_strings.xml
@@ -51,5 +51,4 @@
 מפעיל 
מחדש
 גשרים 
מאופשרים: %s
 
-עטה מסיכה, עטה את 
Tor.
 
diff --git a/mk/torbrowser_strings.xml b/mk/torbrowser_strings.xml
index 508bc9c690..bb59b7b3ca 100644
--- a/mk/torbrowser_strings.xml
+++ b/mk/torbrowser_strings.xml
@@ -72,8 +72,4 @@
 
 
 Побарај англиска 
верзија на веб страните за поголема 
приватност
-
-Користи маска, 
користи Tor.
-Спротивстави се на 
надзорот за време на пандемијата.
-Вашата донација ќе 
биде дуплицирана од Пријателите на Tor.
 
diff --git a/sv-rSE/torbrowser_strings.xml b/sv-rSE/torbrowser_strings.xml
index 1339917f78..3b55e038c5 100644
--- a/sv-rSE/torbrowser_strings.xml
+++ 

[tor-commits] [translation/fenix-torbrowserstringsxml] new translations in fenix-torbrowserstringsxml

2022-02-22 Thread translation
commit 703f3fa0e3b7d51127b15ee8eb10f66966061098
Author: Translation commit bot 
Date:   Tue Feb 22 11:34:19 2022 +

new translations in fenix-torbrowserstringsxml
---
 ar/torbrowser_strings.xml | 4 
 bn/torbrowser_strings.xml | 4 
 ca/torbrowser_strings.xml | 4 
 cs/torbrowser_strings.xml | 4 
 da/torbrowser_strings.xml | 4 
 de/torbrowser_strings.xml | 4 
 el/torbrowser_strings.xml | 4 
 en-US/torbrowser_strings.xml  | 4 
 en-rGB/torbrowser_strings.xml | 4 
 en/torbrowser_strings.xml | 4 
 es-rAR/torbrowser_strings.xml | 4 
 es-rES/torbrowser_strings.xml | 4 
 eu/torbrowser_strings.xml | 1 -
 fa/torbrowser_strings.xml | 4 
 fi/torbrowser_strings.xml | 4 
 fr/torbrowser_strings.xml | 4 
 ga-rIE/torbrowser_strings.xml | 2 --
 gl/torbrowser_strings.xml | 4 
 hi-rIN/torbrowser_strings.xml | 5 -
 hr/torbrowser_strings.xml | 4 
 hu/torbrowser_strings.xml | 4 
 hy-rAM/torbrowser_strings.xml | 4 
 in/torbrowser_strings.xml | 4 
 is/torbrowser_strings.xml | 4 
 it/torbrowser_strings.xml | 4 
 iw/torbrowser_strings.xml | 4 
 ja/torbrowser_strings.xml | 4 
 ka/torbrowser_strings.xml | 4 
 km/torbrowser_strings.xml | 4 
 ko/torbrowser_strings.xml | 4 
 lt/torbrowser_strings.xml | 4 
 mk/torbrowser_strings.xml | 4 
 mr/torbrowser_strings.xml | 1 -
 ms/torbrowser_strings.xml | 2 --
 my/torbrowser_strings.xml | 1 -
 nl/torbrowser_strings.xml | 4 
 or/torbrowser_strings.xml | 4 
 pl/torbrowser_strings.xml | 4 
 pt-rBR/torbrowser_strings.xml | 4 
 pt-rPT/torbrowser_strings.xml | 4 
 ro/torbrowser_strings.xml | 4 
 ru/torbrowser_strings.xml | 4 
 sq/torbrowser_strings.xml | 4 
 sv-rSE/torbrowser_strings.xml | 4 
 sw/torbrowser_strings.xml | 4 
 ta/torbrowser_strings.xml | 5 +
 th/torbrowser_strings.xml | 5 +
 tr/torbrowser_strings.xml | 4 
 uk/torbrowser_strings.xml | 4 
 uz/torbrowser_strings.xml | 4 
 vi/torbrowser_strings.xml | 4 
 zh-rCN/torbrowser_strings.xml | 4 
 zh-rTW/torbrowser_strings.xml | 4 
 53 files changed, 2 insertions(+), 200 deletions(-)

diff --git a/ar/torbrowser_strings.xml b/ar/torbrowser_strings.xml
index 2382aac297..e1e7c14c37 100644
--- a/ar/torbrowser_strings.xml
+++ b/ar/torbrowser_strings.xml
@@ -72,8 +72,4 @@
 
 
 اطلب نسخًا باللغة 
الإنجليزية من صفحات الويب لتعزيز 
الخصوصية
-
-لنستخدم قناعًا 
،لنستخدم Tor.
-لنواجه جائحة الم
راقبة.
-سيتم مطابقة تبرعك 
بواسطة أصدقاء Tor.
 
diff --git a/bn/torbrowser_strings.xml b/bn/torbrowser_strings.xml
index 82de75a541..f4df8c30f5 100644
--- a/bn/torbrowser_strings.xml
+++ b/bn/torbrowser_strings.xml
@@ -72,8 +72,4 @@
 
 
 উন্নত 
গোপনীয়তার জন্য কেবল 
ওয়েবপৃষ্ঠার ইংরেজি সংস্করণ অ
নুরোধ করো
-
-একটি মুখোশ 
ব্যবহার করুন, ব্যবহার করুন 
Tor।
-নজরদারীর অ
তিমারি প্রতিরোধ করো।
-তোমার অনুদানের 
সমপরিমাণ অনুদান টরের বন্ধুরা 
দিবে।
 
diff --git a/ca/torbrowser_strings.xml b/ca/torbrowser_strings.xml
index 93c304c549..6d8b230b55 100644
--- a/ca/torbrowser_strings.xml
+++ b/ca/torbrowser_strings.xml
@@ -72,8 +72,4 @@
 
 
 Demana versions en anglès dels llocs web 
per a una privadesa millorada
-
-Useu una màscara, useu Tor.
-Resistiu la pandèmia de la vigilà
ncia.
-La vostra donació serà igualada pels 
Amics de Tor.
 
diff --git a/cs/torbrowser_strings.xml b/cs/torbrowser_strings.xml
index ec20779809..500abccc34 100644
--- a/cs/torbrowser_strings.xml
+++ b/cs/torbrowser_strings.xml
@@ -72,8 +72,4 @@
 
 
 Pro zvýšení soukromí si vyžádejte 
anglické verze webových stránek
-
-Noste masku, používejte Tor.
-Odolávejte pandemii dozoru.
-Friends of Tor váš sponzorský dar 
zdvojnásobí.
 
diff --git a/da/torbrowser_strings.xml b/da/torbrowser_strings.xml
index 04aa3761dd..a74cff7e04 100644
--- a/da/torbrowser_strings.xml
+++ b/da/torbrowser_strings.xml
@@ -72,8 +72,4 @@
 
 
 Anmod om en engelsk version af 
hjemmesider for styrket anonymitet
-
-Brug en maske, brug Tor.
-Modsæt dig den pandemiske 
overvågning.
-Din donation vil blive matchet af venner 
af Tor.
 
diff --git a/de/torbrowser_strings.xml b/de/torbrowser_strings.xml
index d7c37a7f72..aae6cf0c92 100644
--- a/de/torbrowser_strings.xml
+++ b/de/torbrowser_strings.xml
@@ -72,8 +72,4 @@
 
 
 Anforderung englischer 

[tor-commits] [translation-tools/master] Check for unescaped characters in fenix translations

2022-02-22 Thread emmapeel
commit f0160f12407cb019bbaf680c9aded208181281c2
Author: Nicolas Vigier 
Date:   Tue Feb 22 11:52:05 2022 +0100

Check for unescaped characters in fenix translations

For tor-browser#40367
---
 update_translations | 14 ++
 1 file changed, 14 insertions(+)

diff --git a/update_translations b/update_translations
index ccec8fa..fbe3aef 100755
--- a/update_translations
+++ b/update_translations
@@ -19,6 +19,9 @@ echo ${PID} > ${PIDFILE}
 # Prepare the repository by making sure it is up to date.
 cd $TRANSLATION_REPO
 
+unescaped_files=$(mktemp)
+trap 'rm -f $unescaped_files' EXIT
+
 # For each project, fetch the new translations and commit
 # if there are any changes.
 
@@ -37,6 +40,17 @@ for project in $PROJECTS; do
   # Fetch new translations for this project ...
   $TX pull -a -s $TX_PULL_OPTS > /dev/null;
 
+  if test "$project" = "fenix-torbrowserstringsxml" || test "$project" = 
"fenix-torbrowserstringsxml_completed"
+  then
+find . -name '*.xml' -exec grep -H "[^\\]'" {} \; > "$unescaped_files"
+if ! test -z "$(cat $unescaped_files)"
+then
+  cat $unescaped_files | mail -s "Unescaped files in $project" 
emmap...@torproject.org bo...@torproject.org
+  cd ..
+  continue
+fi
+  fi
+
   # ... add them to git ...
   git add -A . > /dev/null;
   git commit -qm "new translations in $project" > /dev/null || test $? = 1;

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