commit 6d328e8d16c7b34c87d50d4259a6936451225e89
Author: Damian Johnson <[email protected]>
Date:   Sat Dec 5 12:54:56 2015 -0800

    Output truncated when downloading man to a file handle
    
    Oops, we were missing a flush call so when calling download_man_page() we 
were
    liable to truncate content.
---
 stem/cached_tor_manual |  193 ++++++++++++++++++++++++++++++++++++------------
 stem/manual.py         |    1 +
 2 files changed, 146 insertions(+), 48 deletions(-)

diff --git a/stem/cached_tor_manual b/stem/cached_tor_manual
index d9de20e..a549e3a 100644
--- a/stem/cached_tor_manual
+++ b/stem/cached_tor_manual
@@ -28,22 +28,36 @@ signals SIGINT => Tor clients behave as with SIGTERM; but 
Tor servers will do a
 signals SIGPIPE => Tor catches this signal and ignores it.
 signals SIGTERM => Tor will catch this, clean up and sync to disk if 
necessary, and exit.
 signals SIGXFSZ => If this signal exists on your platform, Tor catches and 
ignores it.
-files @LOCALSTATEDIR@/lib/tor/ => The tor process stores keys and other data 
here.
-files DataDirectory/cached-status/ => The most recently downloaded network 
status document for each authority. Each file holds one such document; the 
filenames are the hexadecimal identity key fingerprints of the directory 
authorities. Mostly obsolete.
-files DataDirectory/cached-microdescs and cached-microdescs.new => These files 
hold downloaded microdescriptors. Lines beginning with @-signs are annotations 
that contain more information about a given router. The ".new" file is an 
append-only journal; when it gets too large, all entries are merged into a new 
cached-microdescs file.
 files DataDirectory/lock => This file is used to prevent two Tor instances 
from using same data directory. If access to this file is locked, data 
directory is already in use by Tor.
-files DataDirectory/bw_accounting => Used to track bandwidth accounting values 
(when the current period starts and ends; how much has been read and written so 
far this period). This file is obsolete, and the data is now stored in the 
'state' file as well. Only used when bandwidth accounting is enabled.
-files DataDirectory/fingerprint => Only used by servers. Holds the fingerprint 
of the server's identity key.
-files DataDirectory/cached-certs => This file holds downloaded directory key 
certificates that are used to verify authenticity of documents generated by Tor 
directory authorities.
-files DataDirectory/keys/* => Only used by servers. Holds identity keys and 
onion keys.
-files DataDirectory/state => A set of persistent key-value mappings. These are 
documented in the file. These include: o   The current entry guards and their 
status. o   The current bandwidth accounting values (unused so far; see below). 
o   When the file was last written o   What version of Tor generated the state 
file o   A short history of bandwidth usage, as produced in the server 
descriptors.
-files DataDirectory/cached-consensus and/or cached-microdesc-consensus => The 
most recent consensus network status document we've downloaded.
+files DataDirectory/stats/dirreq-stats => Only used by directory caches and 
authorities. This file is used to collect directory request statistics.
 files DataDirectory/hashed-fingerprint => Only used by bridges. Holds the 
hashed fingerprint of the bridge's identity key. (That is, the hash of the hash 
of the identity key.)
 files @CONFDIR@/torrc => The configuration file, which contains "option value" 
pairs.
 files DataDirectory/cached-descriptors and cached-descriptors.new => These 
files hold downloaded router statuses. Some routers may appear more than once; 
if so, the most recently published descriptor is used. Lines beginning with 
@-signs are annotations that contain more information about a given router. The 
".new" file is an append-only journal; when it gets too large, all entries are 
merged into a new cached-descriptors file.
+files DataDirectory/cached-microdescs and cached-microdescs.new => These files 
hold downloaded microdescriptors. Lines beginning with @-signs are annotations 
that contain more information about a given router. The ".new" file is an 
append-only journal; when it gets too large, all entries are merged into a new 
cached-microdescs file.
+files DataDirectory/cached-certs => This file holds downloaded directory key 
certificates that are used to verify authenticity of documents generated by Tor 
directory authorities.
+files DataDirectory/unverified-microdesc-consensus => This file contains a 
microdescriptor-flavored network consensus document that has been downloaded, 
but which we didn't have the right certificates to check yet.
+files DataDirectory/keys/* => Only used by servers. Holds identity keys and 
onion keys.
+files DataDirectory/stats/buffer-stats => Only used by servers. This file is 
used to collect buffer usage history.
+files DataDirectory/fingerprint => Only used by servers. Holds the fingerprint 
of the server's identity key.
+files DataDirectory/unverified-consensus => This file contains a network 
consensus document that has been downloaded, but which we didn't have the right 
certificates to check yet.
+files HiddenServiceDirectory/client_keys => Authorization data for a hidden 
service that is only accessible by authorized clients.
+files DataDirectory/unparseable-desc => Onion server descriptors that Tor was 
unable to parse are dumped to this file. Only used for debugging.
+files DataDirectory/stats/conn-stats => Only used by servers. This file is 
used to collect approximate connection history (number of active connections 
over time).
+files @LOCALSTATEDIR@/lib/tor/ => The tor process stores keys and other data 
here.
 files DataDirectory/cached-routers and cached-routers.new => Obsolete versions 
of cached-descriptors and cached-descriptors.new. When Tor can't find the newer 
files, it looks here instead.
+files DataDirectory/stats/entry-stats => Only used by servers. This file is 
used to collect incoming connection statistics by Tor entry nodes.
+files DataDirectory/stats/exit-stats => Only used by servers. This file is 
used to collect outgoing connection statistics by Tor exit routers.
+files DataDirectory/cached-consensus and/or cached-microdesc-consensus => The 
most recent consensus network status document we've downloaded.
+files DataDirectory/stats/bridge-stats => Only used by servers. This file is 
used to collect incoming connection statistics by Tor bridges.
+files DataDirectory/router-stability => Only used by authoritative directory 
servers. Tracks measurements for router mean-time-between-failures so that 
authorities have a good idea of how to set their Stable flags.
 files $HOME/.torrc => Fallback location for torrc, if @CONFDIR@/torrc is not 
found.
-files DataDirectory/v3-status-votes => Only for authoritative directory 
servers. This file contains status
+files DataDirectory/networkstatus-bridges => Only used by authoritative bridge 
directories. Contains information about bridges that have self-reported 
themselves to the bridge authority.
+files HiddenServiceDirectory/private_key => The private key for this hidden 
service.
+files DataDirectory/cached-status/ => The most recently downloaded network 
status document for each authority. Each file holds one such document; the 
filenames are the hexadecimal identity key fingerprints of the directory 
authorities. Mostly obsolete.
+files DataDirectory/state => A set of persistent key-value mappings. These are 
documented in the file. These include: o   The current entry guards and their 
status. o   The current bandwidth accounting values (unused so far; see below). 
o   When the file was last written o   What version of Tor generated the state 
file o   A short history of bandwidth usage, as produced in the server 
descriptors.
+files DataDirectory/bw_accounting => Used to track bandwidth accounting values 
(when the current period starts and ends; how much has been read and written so 
far this period). This file is obsolete, and the data is now stored in the 
'state' file as well. Only used when bandwidth accounting is enabled.
+files DataDirectory/v3-status-votes => Only for authoritative directory 
servers. This file contains status votes from all the authoritative directory 
servers and is used to generate the network consensus document.
+files HiddenServiceDirectory/hostname => The 
<base32-encoded-fingerprint>.onion domain name for this hidden service. If the 
hidden service is restricted to authorized clients only, this file also 
contains authorization data for all clients.
 files DataDirectory/control_auth_cookie => Used for cookie authentication with 
the controller. Location can be overridden by the CookieAuthFile config option. 
Regenerated on startup. See control-spec.txt in torspec for details. Only used 
when cookie authentication is enabled.
 config_options.AllowInvalidNodes.category Client
 config_options.AllowInvalidNodes.name AllowInvalidNodes
@@ -196,11 +210,13 @@ config_options.MapAddress.description
 |
 | 1. When evaluating MapAddress expressions Tor stops when it hits the most 
recently added expression that matches the requested address. So if you have 
the following in your torrc, www.torproject.org will map to 1.1.1.1:
 |
-|        MapAddress www.torproject.org 2.2.2.2        MapAddress 
www.torproject.org 1.1.1.1
+|        MapAddress www.torproject.org 2.2.2.2
+|        MapAddress www.torproject.org 1.1.1.1
 |
 | 2. Tor evaluates the MapAddress configuration until it finds no matches. So 
if you have the following in your torrc, www.torproject.org will map to 2.2.2.2:
 |
-|        MapAddress 1.1.1.1 2.2.2.2        MapAddress www.torproject.org 
1.1.1.1
+|        MapAddress 1.1.1.1 2.2.2.2
+|        MapAddress www.torproject.org 1.1.1.1
 |
 | 3. The following MapAddress expression is invalid (and will be ignored) 
because you cannot map from a specific address to a wildcard address:
 |
@@ -243,47 +259,67 @@ config_options.SocksPort.description
 |
 |The isolation flags arguments give Tor rules for which streams received on 
this SocksPort are allowed to share circuits with one another. Recognized 
isolation flags are:
 |
-|IsolateClientAddr    Don't share circuits with streams from a different 
client address. (On by default and strongly recommended; you can disable it 
with NoIsolateClientAddr.)
+|IsolateClientAddr
+|    Don't share circuits with streams from a different client address. (On by 
default and strongly recommended; you can disable it with NoIsolateClientAddr.)
 |
-|IsolateSOCKSAuth    Don't share circuits with streams for which different 
SOCKS authentication was provided. (On by default; you can disable it with 
NoIsolateSOCKSAuth.)
+|IsolateSOCKSAuth
+|    Don't share circuits with streams for which different SOCKS 
authentication was provided. (On by default; you can disable it with 
NoIsolateSOCKSAuth.)
 |
-|IsolateClientProtocol    Don't share circuits with streams using a different 
protocol. (SOCKS 4, SOCKS 5, TransPort connections, NATDPort connections, and 
DNSPort requests are all considered to be different protocols.)
+|IsolateClientProtocol
+|    Don't share circuits with streams using a different protocol. (SOCKS 4, 
SOCKS 5, TransPort connections, NATDPort connections, and DNSPort requests are 
all considered to be different protocols.)
 |
-|IsolateDestPort    Don't share circuits with streams targeting a different 
destination port.
+|IsolateDestPort
+|    Don't share circuits with streams targeting a different destination port.
 |
-|IsolateDestAddr    Don't share circuits with streams targeting a different 
destination address.
+|IsolateDestAddr
+|    Don't share circuits with streams targeting a different destination 
address.
 |
-|KeepAliveIsolateSOCKSAuth    If IsolateSOCKSAuth is enabled, keep alive 
circuits that have streams with SOCKS authentication set indefinitely.
+|KeepAliveIsolateSOCKSAuth
+|    If IsolateSOCKSAuth is enabled, keep alive circuits that have streams 
with SOCKS authentication set indefinitely.
 |
-|SessionGroup=INT    If no other isolation rules would prevent it, allow 
streams on this port to share circuits with streams from every other port with 
the same session group. (By default, streams received on different SocksPorts, 
TransPorts, etc are always isolated from one another. This option overrides 
that behavior.)
+|SessionGroup=INT
+|    If no other isolation rules would prevent it, allow streams on this port 
to share circuits with streams from every other port with the same session 
group. (By default, streams received on different SocksPorts, TransPorts, etc 
are always isolated from one another. This option overrides that behavior.)
 |
 |Other recognized flags for a SocksPort are:
 |
-|NoIPv4Traffic    Tell exits to not connect to IPv4 addresses in response to 
SOCKS requests on this connection.
+|NoIPv4Traffic
+|    Tell exits to not connect to IPv4 addresses in response to SOCKS requests 
on this connection.
 |
-|IPv6Traffic    Tell exits to allow IPv6 addresses in response to SOCKS 
requests on this connection, so long as SOCKS5 is in use. (SOCKS4 can't handle 
IPv6.)
+|IPv6Traffic
+|    Tell exits to allow IPv6 addresses in response to SOCKS requests on this 
connection, so long as SOCKS5 is in use. (SOCKS4 can't handle IPv6.)
 |
-|PreferIPv6    Tells exits that, if a host has both an IPv4 and an IPv6 
address, we would prefer to connect to it via IPv6. (IPv4 is the default.)
+|PreferIPv6
+|    Tells exits that, if a host has both an IPv4 and an IPv6 address, we 
would prefer to connect to it via IPv6. (IPv4 is the default.)
 |
-|CacheIPv4DNS    Tells the client to remember IPv4 DNS answers we receive from 
exit nodes via this connection. (On by default.)
+|CacheIPv4DNS
+|    Tells the client to remember IPv4 DNS answers we receive from exit nodes 
via this connection. (On by default.)
 |
-|CacheIPv6DNS    Tells the client to remember IPv6 DNS answers we receive from 
exit nodes via this connection.
+|CacheIPv6DNS
+|    Tells the client to remember IPv6 DNS answers we receive from exit nodes 
via this connection.
 |
-|GroupWritable    Unix domain sockets only: makes the socket get created as 
group-writable.
+|GroupWritable
+|    Unix domain sockets only: makes the socket get created as group-writable.
 |
-|WorldWritable    Unix domain sockets only: makes the socket get created as 
world-writable.
+|WorldWritable
+|    Unix domain sockets only: makes the socket get created as world-writable.
 |
-|CacheDNS    Tells the client to remember all DNS answers we receive from exit 
nodes via this connection.
+|CacheDNS
+|    Tells the client to remember all DNS answers we receive from exit nodes 
via this connection.
 |
-|UseIPv4Cache    Tells the client to use any cached IPv4 DNS answers we have 
when making requests via this connection. (NOTE: This option, along 
UseIPv6Cache and UseDNSCache, can harm your anonymity, and probably won't help 
performance as much as you might expect. Use with care!)
+|UseIPv4Cache
+|    Tells the client to use any cached IPv4 DNS answers we have when making 
requests via this connection. (NOTE: This option, along UseIPv6Cache and 
UseDNSCache, can harm your anonymity, and probably won't help performance as 
much as you might expect. Use with care!)
 |
-|UseIPv6Cache    Tells the client to use any cached IPv6 DNS answers we have 
when making requests via this connection.
+|UseIPv6Cache
+|    Tells the client to use any cached IPv6 DNS answers we have when making 
requests via this connection.
 |
-|UseDNSCache    Tells the client to use any cached DNS answers we have when 
making requests via this connection.
+|UseDNSCache
+|    Tells the client to use any cached DNS answers we have when making 
requests via this connection.
 |
-|PreferIPv6Automap    When serving a hostname lookup request on this port that 
should get automapped (according to AutomapHostsOnResolve), if we could return 
either an IPv4 or an IPv6 answer, prefer an IPv6 answer. (On by default.)
+|PreferIPv6Automap
+|    When serving a hostname lookup request on this port that should get 
automapped (according to AutomapHostsOnResolve), if we could return either an 
IPv4 or an IPv6 answer, prefer an IPv6 answer. (On by default.)
 |
-|PreferSOCKSNoAuth    Ordinarily, when an application offers both 
"username/password authentication" and "no authentication" to Tor via SOCKS5, 
Tor selects username/password authentication so that IsolateSOCKSAuth can work. 
This can confuse some applications, if they offer a username/password 
combination then get confused when asked for one. You can disable this 
behavior, so that Tor will select "No authentication" when IsolateSOCKSAuth is 
disabled, or when this option is set.
+|PreferSOCKSNoAuth
+|    Ordinarily, when an application offers both "username/password 
authentication" and "no authentication" to Tor via SOCKS5, Tor selects 
username/password authentication so that IsolateSOCKSAuth can work. This can 
confuse some applications, if they offer a username/password combination then 
get confused when asked for one. You can disable this behavior, so that Tor 
will select "No authentication" when IsolateSOCKSAuth is disabled, or when this 
option is set.
 config_options.SocksListenAddress.category Client
 config_options.SocksListenAddress.name SocksListenAddress
 config_options.SocksListenAddress.usage IP[:PORT]
@@ -626,7 +662,8 @@ config_options.DirListenAddress.summary Address the 
directory service is bound t
 config_options.DirListenAddress.description 
 |Bind the directory service to this address. If you specify a port, bind to 
this port rather than the one specified in DirPort. (Default: 0.0.0.0) This 
directive can be specified multiple times to bind to multiple addresses/ports.
 |
-|    This option is deprecated; you can get the same behavior with DirPort now 
   that it supports NoAdvertise and explicit addresses.
+|    This option is deprecated; you can get the same behavior with DirPort now
+|    that it supports NoAdvertise and explicit addresses.
 config_options.DirPolicy.category Directory
 config_options.DirPolicy.name DirPolicy
 config_options.DirPolicy.usage policy,policy,...
@@ -750,9 +787,11 @@ config_options.ControlPort.description
 |
 |Recognized flags are...
 |
-|GroupWritable    Unix domain sockets only: makes the socket get created as 
group-writable.
+|GroupWritable
+|    Unix domain sockets only: makes the socket get created as group-writable.
 |
-|WorldWritable    Unix domain sockets only: makes the socket get created as 
world-writable.
+|WorldWritable
+|    Unix domain sockets only: makes the socket get created as world-writable.
 config_options.ControlListenAddress.category General
 config_options.ControlListenAddress.name ControlListenAddress
 config_options.ControlListenAddress.usage IP[:PORT]
@@ -1076,7 +1115,7 @@ config_options.ExitPolicy.name ExitPolicy
 config_options.ExitPolicy.usage policy,policy,...
 config_options.ExitPolicy.summary Traffic destinations that can exit from this 
relay
 config_options.ExitPolicy.description 
-|Set an exit policy for this server. Each policy is of the form 
"accept[6]|reject[6]ADDR[/MASK][:PORT]". If /MASK is omitted then this policy 
just applies to the host given. Instead of giving a host or network you can 
also use "*" to denote the universe (0.0.0.0/0 and ::/128), or *4 to denote all 
IPv4 addresses, and *6 to denote all IPv6 addresses.  PORT can be a single port 
number, an interval of ports "FROM_PORT-TO_PORT", or "*". If PORT is omitted, 
that means "*".
+|Set an exit policy for this server. Each policy is of the form 
"accept[6]|reject[6] ADDR[/MASK][:PORT]". If /MASK is omitted then this policy 
just applies to the host given. Instead of giving a host or network you can 
also use "*" to denote the universe (0.0.0.0/0 and ::/128), or *4 to denote all 
IPv4 addresses, and *6 to denote all IPv6 addresses.  PORT can be a single port 
number, an interval of ports "FROM_PORT-TO_PORT", or "*". If PORT is omitted, 
that means "*".
 |
 |For example, "accept 18.7.22.69:*,reject 18.0.0.0/8:*,accept *:*" would 
reject any IPv4 traffic destined for MIT except for web.mit.edu, and accept any 
other IPv4 or IPv6 traffic.
 |
@@ -1092,11 +1131,20 @@ config_options.ExitPolicy.description
 |
 |Policies are considered first to last, and the first match wins. If you want 
to allow the same ports on IPv4 and IPv6, write your rules using accept/reject 
*. If you want to allow different ports on IPv4 and IPv6, write your IPv6 rules 
using accept6/reject6 *6, and your IPv4 rules using accept/reject *4. If you 
want to _replace_ the default exit policy, end your exit policy with either a 
reject *:* or an accept *:*. Otherwise, you're _augmenting_ (prepending to) the 
default exit policy. The default exit policy is:
 |
-|
-|
-|    reject *:25    reject *:119    reject *:135-139    reject *:445    reject 
*:563    reject *:1214    reject *:4661-4666    reject *:6346-6429    reject 
*:6699    reject *:6881-6999    accept *:*
-|
-|    Since the default exit policy uses accept/reject *, it applies to both    
IPv4 and IPv6 addresses.
+|    reject *:25
+|    reject *:119
+|    reject *:135-139
+|    reject *:445
+|    reject *:563
+|    reject *:1214
+|    reject *:4661-4666
+|    reject *:6346-6429
+|    reject *:6699
+|    reject *:6881-6999
+|    accept *:*
+|
+|    Since the default exit policy uses accept/reject *, it applies to both
+|    IPv4 and IPv6 addresses.
 config_options.ExitPolicyRejectPrivate.category Relay
 config_options.ExitPolicyRejectPrivate.name ExitPolicyRejectPrivate
 config_options.ExitPolicyRejectPrivate.usage 0|1
@@ -1137,9 +1185,26 @@ config_options.ORPort.summary Port used to accept relay 
traffic
 config_options.ORPort.description 
 |Advertise this port to listen for connections from Tor clients and servers. 
This option is required to be a Tor server. Set it to "auto" to have Tor pick a 
port for you. Set it to 0 to not run an ORPort at all. This option can occur 
more than once. (Default: 0)
 |
-|    Tor recognizes these flags on each ORPort:    **NoAdvertise**::        By 
default, we bind to a port and tell our users about it. If        NoAdvertise 
is specified, we don't advertise, but listen anyway.  This        can be useful 
if the port everybody will be connecting to (for        example, one that's 
opened on our firewall) is somewhere else.    **NoListen**::        By default, 
we bind to a port and tell our users about it. If        NoListen is specified, 
we don't bind, but advertise anyway.  This        can be useful if something 
else  (for example, a firewall's port        forwarding configuration) is 
causing connections to reach us.    **IPv4Only**::        If the address is 
absent, or resolves to both an IPv4 and an IPv6        address, only listen to 
the IPv4 address.    **IPv6Only**::        If the address is absent, or 
resolves to both an IPv4 and an IPv6        address, only listen to the IPv6 
address.
-|
-|    For obvious reasons, NoAdvertise and NoListen are mutually exclusive, and 
   IPv4Only and IPv6Only are mutually exclusive.
+|    Tor recognizes these flags on each ORPort:
+|    **NoAdvertise**::
+|        By default, we bind to a port and tell our users about it. If
+|        NoAdvertise is specified, we don't advertise, but listen anyway.  This
+|        can be useful if the port everybody will be connecting to (for
+|        example, one that's opened on our firewall) is somewhere else.
+|    **NoListen**::
+|        By default, we bind to a port and tell our users about it. If
+|        NoListen is specified, we don't bind, but advertise anyway.  This
+|        can be useful if something else  (for example, a firewall's port
+|        forwarding configuration) is causing connections to reach us.
+|    **IPv4Only**::
+|        If the address is absent, or resolves to both an IPv4 and an IPv6
+|        address, only listen to the IPv4 address.
+|    **IPv6Only**::
+|        If the address is absent, or resolves to both an IPv4 and an IPv6
+|        address, only listen to the IPv6 address.
+|
+|    For obvious reasons, NoAdvertise and NoListen are mutually exclusive, and
+|    IPv4Only and IPv6Only are mutually exclusive.
 config_options.ORListenAddress.category Relay
 config_options.ORListenAddress.name ORListenAddress
 config_options.ORListenAddress.usage IP[:PORT]
@@ -1147,7 +1212,8 @@ config_options.ORListenAddress.summary Address for relay 
connections
 config_options.ORListenAddress.description 
 |Bind to this IP address to listen for connections from Tor clients and 
servers. If you specify a port, bind to this port rather than the one specified 
in ORPort. (Default: 0.0.0.0) This directive can be specified multiple times to 
bind to multiple addresses/ports.
 |
-|    This option is deprecated; you can get the same behavior with ORPort now  
  that it supports NoAdvertise and explicit addresses.
+|    This option is deprecated; you can get the same behavior with ORPort now
+|    that it supports NoAdvertise and explicit addresses.
 config_options.PortForwarding.category Relay
 config_options.PortForwarding.name PortForwarding
 config_options.PortForwarding.usage 0|1
@@ -1373,9 +1439,40 @@ config_options.TestingTorNetwork.summary Overrides other 
options to be a testing
 config_options.TestingTorNetwork.description 
 |If set to 1, Tor adjusts default values of the configuration options below, 
so that it is easier to set up a testing Tor network. May only be set if 
non-default set of DirAuthorities is set. Cannot be unset while Tor is running. 
(Default: 0)
 |
-|
-|
-|    ServerDNSAllowBrokenConfig 1    DirAllowPrivateAddresses 1    
EnforceDistinctSubnets 0    AssumeReachable 1    AuthDirMaxServersPerAddr 0    
AuthDirMaxServersPerAuthAddr 0    ClientDNSRejectInternalAddresses 0    
ClientRejectInternalAddresses 0    CountPrivateBandwidth 1    
ExitPolicyRejectPrivate 0    ExtendAllowPrivateAddresses 1    
V3AuthVotingInterval 5 minutes    V3AuthVoteDelay 20 seconds    V3AuthDistDelay 
20 seconds    MinUptimeHidServDirectoryV2 0 seconds    
TestingV3AuthInitialVotingInterval 5 minutes    TestingV3AuthInitialVoteDelay 
20 seconds    TestingV3AuthInitialDistDelay 20 seconds    
TestingAuthDirTimeToLearnReachability 0 minutes    
TestingEstimatedDescriptorPropagationTime 0 minutes    
TestingServerDownloadSchedule 0, 0, 0, 5, 10, 15, 20, 30, 60    
TestingClientDownloadSchedule 0, 0, 5, 10, 15, 20, 30, 60    
TestingServerConsensusDownloadSchedule 0, 0, 5, 10, 15, 20, 30, 60    
TestingClientConsensusDownloadSchedule 0, 0, 5, 10, 15, 20, 30, 60    
TestingBridge
 DownloadSchedule 60, 30, 30, 60    TestingClientMaxIntervalWithoutRequest 5 
seconds    TestingDirConnectionMaxStall 30 seconds    
TestingConsensusMaxDownloadTries 80    TestingDescriptorMaxDownloadTries 80    
TestingMicrodescMaxDownloadTries 80    TestingCertMaxDownloadTries 80    
TestingEnableConnBwEvent 1    TestingEnableCellStatsEvent 1    
TestingEnableTbEmptyEvent 1
+|    ServerDNSAllowBrokenConfig 1
+|    DirAllowPrivateAddresses 1
+|    EnforceDistinctSubnets 0
+|    AssumeReachable 1
+|    AuthDirMaxServersPerAddr 0
+|    AuthDirMaxServersPerAuthAddr 0
+|    ClientDNSRejectInternalAddresses 0
+|    ClientRejectInternalAddresses 0
+|    CountPrivateBandwidth 1
+|    ExitPolicyRejectPrivate 0
+|    ExtendAllowPrivateAddresses 1
+|    V3AuthVotingInterval 5 minutes
+|    V3AuthVoteDelay 20 seconds
+|    V3AuthDistDelay 20 seconds
+|    MinUptimeHidServDirectoryV2 0 seconds
+|    TestingV3AuthInitialVotingInterval 5 minutes
+|    TestingV3AuthInitialVoteDelay 20 seconds
+|    TestingV3AuthInitialDistDelay 20 seconds
+|    TestingAuthDirTimeToLearnReachability 0 minutes
+|    TestingEstimatedDescriptorPropagationTime 0 minutes
+|    TestingServerDownloadSchedule 0, 0, 0, 5, 10, 15, 20, 30, 60
+|    TestingClientDownloadSchedule 0, 0, 5, 10, 15, 20, 30, 60
+|    TestingServerConsensusDownloadSchedule 0, 0, 5, 10, 15, 20, 30, 60
+|    TestingClientConsensusDownloadSchedule 0, 0, 5, 10, 15, 20, 30, 60
+|    TestingBridgeDownloadSchedule 60, 30, 30, 60
+|    TestingClientMaxIntervalWithoutRequest 5 seconds
+|    TestingDirConnectionMaxStall 30 seconds
+|    TestingConsensusMaxDownloadTries 80
+|    TestingDescriptorMaxDownloadTries 80
+|    TestingMicrodescMaxDownloadTries 80
+|    TestingCertMaxDownloadTries 80
+|    TestingEnableConnBwEvent 1
+|    TestingEnableCellStatsEvent 1
+|    TestingEnableTbEmptyEvent 1
 config_options.TestingV3AuthInitialVotingInterval.category Testing
 config_options.TestingV3AuthInitialVotingInterval.name 
TestingV3AuthInitialVotingInterval
 config_options.TestingV3AuthInitialVotingInterval.usage N minutes|hours
diff --git a/stem/manual.py b/stem/manual.py
index ee800c4..5e34020 100644
--- a/stem/manual.py
+++ b/stem/manual.py
@@ -198,6 +198,7 @@ def download_man_page(path = None, file_handle = None, url 
= GITWEB_MANUAL_URL,
     if file_handle:
       with open(manual_path, 'rb') as manual_file:
         shutil.copyfileobj(manual_file, file_handle)
+        file_handle.flush()
   finally:
     shutil.rmtree(dirpath)
 



_______________________________________________
tor-commits mailing list
[email protected]
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits

Reply via email to