{"push_id":577979845,"size":17,"distinct_size":17,"ref":"refs/heads/master","head":"6378bcf4b9039ae563d793c97f2399feaf959750","before":"164eeefb9360e20d358f3a08157c5b6227d98ac7","commits":[{"sha":"6fdb179d84659fb14bacebf08c386cf21ec1b9d4","author":{"email":"fee792f8e0ffab4af5af135a5a38ef302d99eacf@schwanenlied.me","name":"Yawning Angel"},"message":"Fix compute_frac_paths_available, when ExitNodes is not set.","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/6fdb179d84659fb14bacebf08c386cf21ec1b9d4"},{"sha":"8571e86d27577e348bdb6398eda6190c2c63c0ed","author":{"email":"fee792f8e0ffab4af5af135a5a38ef302d99eacf@schwanenlied.me","name":"Yawning Angel"},"message":"Fix bootstrap directory information logging.\n\n`dir_info_status` is used from main.c:directory_info_has_arrived() to\nprovide useful (INFO/NOTICE) level logging to users, and should always\nbe updated regardless of the rate limiting.","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/8571e86d27577e348bdb6398eda6190c2c63c0ed"},{"sha":"5ee48d47a73691001746541e15b3dc5a89fa37eb","author":{"email":"76f9d92240e914487b912907db55e4ef327f8b68@riseup.net","name":"George Kadianakis"},"message":"Parse Guardfraction file and apply results to routerstatuses.\n\nParse the file just before voting and apply its information to the\nprovided vote_routerstatus_t. This follows the same logic as when\ndirauths parse bwauth files.","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/5ee48d47a73691001746541e15b3dc5a89fa37eb"},{"sha":"7ddfb6aa2f3779da8bacd0574f152f558a5a508e","author":{"email":"76f9d92240e914487b912907db55e4ef327f8b68@riseup.net","name":"George Kadianakis"},"message":"Write guardfraction information to votes.\n\nIf a dirauth has guardfraction information about a guard, write it down\nwhen serializing the routerstatus.","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/7ddfb6aa2f3779da8bacd0574f152f558a5a508e"},{"sha":"db805b91708c02e9b2b4d0c25ec17a45e81929aa","author":{"email":"76f9d92240e914487b912907db55e4ef327f8b68@riseup.net","name":"George Kadianakis"},"message":"Write GuardFraction information to consensus.\n\nIf we've seen enough votes with guardfraction information, write down\nthe GuardFraction string in the consensus.","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/db805b91708c02e9b2b4d0c25ec17a45e81929aa"},{"sha":"f4a63f8eabbdd842ebeb97aabba92ea47c37a607","author":{"email":"76f9d92240e914487b912907db55e4ef327f8b68@riseup.net","name":"George Kadianakis"},"message":"Parse GuardFraction info from consensuses and votes.\n\nAlso introduce the UseGuardFraction torrc option which decides whether\nclients should use guardfraction information found in the consensus.","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/f4a63f8eabbdd842ebeb97aabba92ea47c37a607"},{"sha":"14a3c17ce658c47ae9a0b8e689970efe37ca3b22","author":{"email":"76f9d92240e914487b912907db55e4ef327f8b68@riseup.net","name":"George Kadianakis"},"message":"Calculate the guardfraction bandwidth of a guard.","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/14a3c17ce658c47ae9a0b8e689970efe37ca3b22"},{"sha":"f7a8b1918446ad5c88955a76911955daba6684ac","author":{"email":"76f9d92240e914487b912907db55e4ef327f8b68@riseup.net","name":"George Kadianakis"},"message":"Calculate total bandwidth weights using the guardfraction bandwidths.\n\nNow use the function introduced in the previous commit, to calculate the\ntotal bandwidth weights when making the consensus.","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/f7a8b1918446ad5c88955a76911955daba6684ac"},{"sha":"b941f109ac037b270da6f07ffb4947ee237e468a","author":{"email":"76f9d92240e914487b912907db55e4ef327f8b68@riseup.net","name":"George Kadianakis"},"message":"Calculate relay weighted bandwidth using guardfraction bandwidths.\n\nNow use the guardfraction function to calculate individual relay\nbandwidth weights.","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/b941f109ac037b270da6f07ffb4947ee237e468a"},{"sha":"c2b13e22e7c03f6e318b516ae1faf76f8ba30e83","author":{"email":"76f9d92240e914487b912907db55e4ef327f8b68@riseup.net","name":"George Kadianakis"},"message":"Unittest prep: Move get_yesterday_date_str() to helper file.\n\nWe want to use this function in our guardfraction unittests, so make a\ntest_helpers module and move it there.","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/c2b13e22e7c03f6e318b516ae1faf76f8ba30e83"},{"sha":"028ede2f5e4ca3f5695cf9ca73fb9bd17a7de898","author":{"email":"76f9d92240e914487b912907db55e4ef327f8b68@riseup.net","name":"George Kadianakis"},"message":"Add unittests for the guardfraction feature.","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/028ede2f5e4ca3f5695cf9ca73fb9bd17a7de898"},{"sha":"33053d50a0c3a3545285bac8b6883f7c66cf748c","author":{"email":"76f9d92240e914487b912907db55e4ef327f8b68@riseup.net","name":"George Kadianakis"},"message":"Final guardfraction preparations for upstream merge.\n\n- Write a changes file.\n- Change some logs to lesser severities.","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/33053d50a0c3a3545285bac8b6883f7c66cf748c"},{"sha":"5c34a53068f5556f5648dfe522030983f552a1fd","author":{"email":"76f9d92240e914487b912907db55e4ef327f8b68@riseup.net","name":"George Kadianakis"},"message":"Don't exit if we can't find the GuardfractionFile when booting.\n\n...just disable the feature in that case.","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/5c34a53068f5556f5648dfe522030983f552a1fd"},{"sha":"96211bcf714ac739f605dc0b5b8754418080591f","author":{"email":"72ea8dfcf31d0eadc9160881a3c0d99a31e0e524@torproject.org","name":"Nick Mathewson"},"message":"Merge branch 'bug9321_rerebase'\n\nConflicts:\n\tsrc/or/dirvote.h\n\tsrc/test/include.am\n\tsrc/test/test_entrynodes.c","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/96211bcf714ac739f605dc0b5b8754418080591f"},{"sha":"6cdb213b6cb9f682c3f72bba974f53f588d71b61","author":{"email":"72ea8dfcf31d0eadc9160881a3c0d99a31e0e524@torproject.org","name":"Nick Mathewson"},"message":"Combine test_helpers.[ch] and testhelper.[ch]","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/6cdb213b6cb9f682c3f72bba974f53f588d71b61"},{"sha":"9e6147a40c10343b880be175c654a7258c5496ef","author":{"email":"72ea8dfcf31d0eadc9160881a3c0d99a31e0e524@torproject.org","name":"Nick Mathewson"},"message":"Merge remote-tracking branch 'yawning/bug14918'","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/9e6147a40c10343b880be175c654a7258c5496ef"},{"sha":"6378bcf4b9039ae563d793c97f2399feaf959750","author":{"email":"72ea8dfcf31d0eadc9160881a3c0d99a31e0e524@torproject.org","name":"Nick Mathewson"},"message":"Fix an implicit-narrowing warning","distinct":true,"url":"https://api.github.com/repos/torproject/tor/commits/6378bcf4b9039ae563d793c97f2399feaf959750"}]}